Se consideră o listă liniară simplu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:
struct Nod
{
int info;
Nod *leg;
};
în care câmpul info memorează un număr întreg, iar câmpul leg memorează adresa următorului element al listei.
Cerinţa
Să se scrie o funcție C++ cu următorul prototip:
void FLsiElimina(Nod * &head);
care, în lista pentru care primul element are adresa memorată în pointerul head, elimină toate nodurile cuprinse între cel mai din stânga nod care memorează un număr divizibil cu 3 și cel mai din dreapta nod care memorează un număr divizibil cu 3, inclusiv acestea. Se garantează că lista va conține cel puțin două noduri care au informația divizibilă cu 3. Dacă se elimină toate nodurile, atunci după apelul funcției trebuie ca head = NULL. De exemplu, dacă lista conține inițial informațiile 1,27,3,4,13,12,44,23, atunci la final lista va fi: 1,44,23.
Important
Soluţia propusă va conţine definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.