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
q
poate fiprim
siultim
; - dacă lista nu conține niciun element, pointerii
prim
siultim
vor avea valoareaNULL
; - în toate cazurile, la ieșirea din apel
prim
va memora adresa primului element al listei, iarultim
va memora adresa ultimului element al listei. - structura care definește tipul
nod
a 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.