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 StergeAB(nod *&prim, nod *&ultim, int A, int B)
Primul nod are adresa memorată în pointerul prim si ultimul nod are adresa memorata in pointerul ultim. Lista conține cel puțin trei noduri. Funcția va șterge primul nod care memorează valoarea A și ultimul nod care memorează valoarea B. De exemplu, dacă lista reține valorile 5,3,6,2,1,8,6,1,5,1,4, A = 6 și B = 5 atunci după apelul StergeAB(prim, ultim, 6, 5), lista va fi 5,3,2,1,8,6,1,1,4.
Restricții și precizări
- Numele funcției va fi
StergeAB A ≠ B- Lista inițială conține cel puțin trei noduri
- Dacă lista nu conține noduri care memorează valorile
AșiB, atunci nu se șterge niciun nod din listă. Dacă lista conține doar valoareaA, atunci se va șterge doar primul nod care memorează valoareaA. Dacă lista conține doar valoareaB, atunci se va șterge doar ultimul nod care memorează valoareaB.
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.