Se consideră o listă liniară dublu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:
struct nod { int info; nod *ant, *urm; };
în care câmpul info
memorează un număr natural, câmpul ant
memorează adresa elementului anterior al listei, iar campul urm
memorează adresa elementului următor al listei.
Cerința
Să se scrie o funcție C++ cu următorul prototip:
void Erase(nod *&prim, nod *&ultim)
Primul nod are adresa memorată în pointerul prim
si ultimul nod are adresa memorata in pointerul ultim
. Lista conține cel puțin un nod. Funcția va șterge toate nodurile care memorează numere pare. De exemplu, dacă lista reține valorile 5,3,6,2,1,8
, atunci după apelul Erase(prim, ultim)
, lista va fi 5,3,1
.
Restricții și precizări
- Numele funcției va fi
Erase
- Lista inițială conține cel puțin un nod
- Dacă toate informațiile din noduri sunt pare, atunci în final lista va fi vidă, adică
prim = ultim = NULL
.
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.