3750 pbinfo
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 fi prim si ultim;
dacă lista nu conține niciun element, pointerul prim si ultim va avea valoarea NULL;
în toate cazurile, la ieșirea din apel prim va memora adresa primului element al listei, iar ultim va memora adresa ultimului element al listei.
structura care definește tipul nod a fost modificată. Solutiile mai vechi nu se 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.
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
Salut! (*/ω\*)
Ai aici rezolvarea problemei #3750 de pe pbinfo
void InserareInainteQ(nod *&prim, nod *&ultim, nod *q, int x){
nod *nou = new nod;
nou -> info = x;
if(prim == NULL){
// lista este vida
nou -> ant = nou -> urm = NULL;
prim = ultim = nou;
}else if(q == prim){
// inserez la inceputul listei
nou -> urm = prim;
nou -> ant = NULL;
prim = nou;
}else{
nod *t = new nod;
t = prim;
while(t -> urm != q)
t = t -> urm;
// t este elementul din stanga celui memorat la adresa q
nou -> urm = t -> urm;
nou -> ant = t;
t -> urm = nou;
}
}
#copaceibrainly
Alte întrebări interesante
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Engleza,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă