Sunteți pe pagina 1din 2

O list liniar simplu nlnuit este o structur de forma:

Semnificaia notaiilor folosite este urmtoarea:


adr1, adr2, adr3, ..., adrn reprezint n nregistrri; info1, info2, info3, ..., infon reprezint informaiile coninute de noduri, de alt natur dect cele de adres 0 - are semnificaia "nici o adres" - elementul este ultimul n list.

Un element din list (numit i nod de list) este de un tip structur i are (cel puin) dou cmpuri: un cmp de date (sau mai multe) si un cmp de adrtur. Exemplu:
typedef int T; // orice tip numeric typedef struct nod { T info ; // cmp de date struct nod * adr ; // cmp de adrtur } Nod;

Operaii asupra unei liste liniare O list nlnuit este complet caracterizat de variabila "cap de list", care conine adresa primului nod (sau a ultimului nod, ntr-o list circular). Operaiile uzuale cu o list nlnuit sunt :
- Iniializare list ( a variabilei cap de list ): initL (List &) - Adugarea unui nou element la o list: addL (List&, T) - Eliminarea unui element dintr-o list: delL (List&, T) - Cutarea unei informaii date ntr-o list: findL (List, T) - Test de list vid: emptyL(List) - Determinarea dimensiunii listei: sizeL (List) - Parcurgerea tuturor nodurilor din list (traversare list).

Accesul la elementele unei liste este strict secvenial, pornind de la primul element i trecnd prin toate nodurile precedente celui cutat, sau pornind din elementul curent al listei, dac se memoreaz i adresa elementului curent al listei. Pentru parcurgere se folosete o variabil cursor, de tip pointer ctre nod, care se iniializeaz cu adresa cap de list; pentru a avansa la urmtorul element din list se folosete adresa din cmpul de adres al nodului curent:

Nod * p, *prim; p=prim; //adresa primului element ... p=p->adr; //avans la urmatorul nod

Exemplu de afiare a unei liste nlnuite definite prin adresa primului nod:
void printL(Nod *lst){ while(lst!=NULL){ adresa lst printf("%d ", lst->info); lst=lst->adr; } //repeta cat timp exista ceva la

Cutarea secvenial a unei informaii date ntr-o list este asemntoare operaiei de afiare, dar are ca rezultat adresa nodului ce conine informaia cutat .
Nod *findL(Nod *lst, T x){ while(lst!=NULL && x!=lst->info) lst=lst->adr; return lst; //NULL daca x nu a fost gasit }

Operaia de iniializare a unei liste stabilete adresa de nceput a listei:


void initL(Nod*& lst){ lst=NULL; //lista initiala vida }

Adugarea unui element la o list nlnuit se poate face:


- Mereu la nceputul listei; - Mereu la sfritul listei; - Intr-o poziie determinat de informaia noului element.

S-ar putea să vă placă și

  • Tema 3
    Tema 3
    Document1 pagină
    Tema 3
    Stefan Caraiman
    Încă nu există evaluări
  • IP Strings
    IP Strings
    Document1 pagină
    IP Strings
    Stefan Caraiman
    Încă nu există evaluări
  • IP Strings Part 2
    IP Strings Part 2
    Document1 pagină
    IP Strings Part 2
    Stefan Caraiman
    Încă nu există evaluări
  • Sfarsit An Discurs
    Sfarsit An Discurs
    Document1 pagină
    Sfarsit An Discurs
    Stefan Caraiman
    Încă nu există evaluări
  • Traditionalism Ul
    Traditionalism Ul
    Document2 pagini
    Traditionalism Ul
    Stefan Caraiman
    Încă nu există evaluări
  • Sunet
    Sunet
    Document2 pagini
    Sunet
    Stefan Caraiman
    Încă nu există evaluări
  • SC Vita Lact SRL
    SC Vita Lact SRL
    Document2 pagini
    SC Vita Lact SRL
    Stefan Caraiman
    Încă nu există evaluări
  • Directive Europene
    Directive Europene
    Document24 pagini
    Directive Europene
    Stefan Caraiman
    Încă nu există evaluări
  • Plam Valea Lupului
    Plam Valea Lupului
    Document30 pagini
    Plam Valea Lupului
    Stefan Caraiman
    Încă nu există evaluări