Documente Academic
Documente Profesional
Documente Cultură
Pentru folosirea mai usoara a listelor liniare putem avea, pentru fiecare nod al
listei nu numai un pointer la elementul urmator ci si unul la nodul precedent. O astfel
de reprezentare a unei liste se numeste lista dublu inlantuita. Astfel, orice nod va avea
forma:
llink info rlink
Orice lista dublu inlantuita va avea doi pointeri FIRST, care pointeaza la primul nod si
LAST care pointeaza la ultimul nod.
FIRST LAST
1
Algoritm: Folosim variabilele info_nou ce contine valoarea informatiei
nodului ce trebuie introdus in lista, p pointer la un nod
Aloca memorie pentru un nod nou. Returneaza p, un pointer la noul nod.
if p NULL then
p -> rlink = NULL
p -> info = info_nou
p -> llink = LAST
LAST -> rlink =p
LAST=p
else OVERFLOW
endif
FIRST LAST
FIRST
2
NULL llink info rlink llink info rlink ...
NULL
o eliminarea ultimului nod:
Algoritm:
elem_sters = LAST -> info
LAST = LAST -> llink
LAST ->rlink = NULL
LAST
NULL
eliminarea unui nod dat din lista:
Algoritm: Folosim variabilele sterge, un pointer la nodul care trebuie eliminat din
lista, inainte, pointer la nodul dinainte si dupa, pointer la nodul dupa nodul ce
trebuie sters.
elem_sters = sterge -> info
inainte = sterge -> llink
dupa = sterge -> rlink
dupa ->llink = inainte
inainte ->rlink = dupa
... ... llink info rlink llink info rlink llink info rlink ...