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 întreg, 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 InserareInainteQ(nod *& prim, nod *& ultim, nod * q, int x);
care adaugă valoarea x inaintea nodului de adresa q al listei pentru care primul element are adresa memorată în pointerul prim si ultimul element are adresa memorata in pointerul ultim.
Restricții și precizări
- numele funcției va fi
InserareInainteQ; - pointerul
qpoate fiprimsiultim; - dacă lista nu conține niciun element, pointerii
primsiultimvor avea valoareaNULL; - în toate cazurile, la ieșirea din apel
primva memora adresa primului element al listei, iarultimva memora adresa ultimului element al listei. - structura care definește tipul
noda fost modificată. Solutiile mai vechi nu mai compilează.
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.


