Informatică, întrebare adresată de mariaflorianand, 8 ani în urmă

Se consideră o listă liniară simplu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:
view source

struct nod{
int info;
nod * urm;
};

în care câmpul info memorează un număr natural, iar câmpul urm memorează adresa următorului element al listei.
Cerinţa

Să se scrie o funcție C++ cu următorul prototip
void sterge(nod * & p);

care elimină, dacă există, din lista pentru care primul element are adresa memorată în pointerul p toate elementele pare.


problema 1178 pbinfo
de preferabil cu explicatii

Răspunsuri la întrebare

Răspuns de MichaelKing
2
void sterge(nod * & p) { nod * t = p , * q; while(t -> urm != NULL) if( t -> urm -> info % 2 == 0) { q = t -> urm; t -> urm = q -> urm; delete q; } else t = t -> urm; if(p -> info % 2 == 0) { t = p; p = p -> urm; delete t; } }
Alte întrebări interesante