Documente Academic
Documente Profesional
Documente Cultură
inlantuite
Adaugarea si stergerea
nodurilor
Glodeanu Natali
cls. a XI - A
Adaugarea nodurilor
X 0
x prim
p
prim prim
Adaugare dupa ultimul nod
Pasii: void adupa(nod *&ultim,int x)
{ nod *p=new nod;
1. Se aloca memorie nodului
2. Se scrie informatia in nod p->info=x;
3. Adresa de de legatura a nodului p devine NULL p->urm=NULL;
4. Nodul ultim se leaga de nodul p adaugat ultim->urm=p;
5. Nodul p devine ultim ultim=p;
}
p
0 X 0
ultim p ultim
Adaugare dupa un nod q
Pasii: void adupaq(nod *q, nod *&ultim, int x)
{ nod *p=new nod;
• Se aloca memorie nodului
• p->info=x;
Se scrie informatia in nod
• Nodul p se leaga de succesorul nodului q p->urm=q->urm;
• Nodul q se leaga de nodul p adaugat q->urm=p;
• Daca nodul q a fost ultimul nod in lista, if(q==ultim)
atunci p devine ultim ultim=p;
}
p
q->urm x q->urm
q p
Adaugare inainte de nod q
void ainainteq(nod *&q,
Pasii:
nod *&ultim, int x)
1. Se aloca memorie nodului { nod *p=new nod;
2. Copiem informatia din q in p p->info=q->info;
3. Nodul p se leaga de succesorul nodului q p->urm=q->urm;
4. Se scrie in q info. care trebuia adugata q->info=x;
5. Nodul q se leaga de nodul p adugat q->urm=p;
6. Daca q a fost ultimul nod in lista, if (purm==NULL)
nodul p adaugat devine ultim; ultim=p;
}
q->info p
X q->urm q->info q->urm
q
p q
p
Stergerea unui nod
Se poate sterge :
• Primul nod din lista
• Ultimul nod din lista
• Un nod dintr-o pozitie intermediara
• Toata lista
Stergerea primului nod din
lista
Pasi:
void eliminprim(nod *&prim)
1. Se salveaza adresa pointerului prim in q { nod *q=prim;
2. Succesorul nodului devine prim prim=prim->urm;
3. Se elibereaza zona de memorie delete q;
ocupata de pointerul q }
prim prim
Stergerea ultimului nod
din listavoid eliminultim(nod *prim, nod
Pasii: *& ultim)
0 0
ultim q
ultim
Stergerea unui nod din
interiorul listei
Pasii: void elimina(nod *p, nod *&ultim)
1. Se salveaza adr. succesorului lui p in q { nod *q=p->urm;
2. Copeim in p informatia din q p->info=q->info;
3. Copiem in p adresa din q p->urm=q->urm;
4. Se elibreaza spatiu de mem. ocupat de q delet q;
5. Daca suceesorul lui p a fost ultim, if(p->urm==NULL)
atunci p devine ultim ultim=p;
}
p q
Stergerea unei liste
intregi
Pasii: void steglista(nod *&prim)
1.Se initializeaza p cu adresa nodului prim { nod *p=prim,*q;
2.Cat timp p diferit de NULL se parcurge lista while(p!=NULL)
3.Se salveaza adresa nodului p in q { q=p;
4.Se trece la nodul urmator p=p->urm;
5.Se elibereaza zona de memorie ocupata de q delet q;
6.Se revine la pasul 2 }
7.Prim devine si ultim prim=ultim;
}
The end
0
p q p q p q ultim
prim 0