Introducere in Stiinta Calculatoarelor 2013 | Page 60

Alte operaţii pot fi:  parcurgerea listei în scopul căutării unui nod (de indice sau valoare cunoscută), al primului sau ultimului element (capul sau coada listei);  determinarea elementului succesor sau predecesor pentru un nod dat;  iniţializarea listei – adică ştergerea tuturor elementelor din listă (vidarea listei). Operaţiile de ştergere ale unui nod sau a întregii liste face totodată eliberarea zonei de memorie ocupată, spre a fi utilizată pentru alte variabile dinamice. Tipuri de liste Dacă pointer-ul ultimului nod En al listei indică primul element E1, atunci lista se numeşte listă circulară, fiindcă parcurgerea liste se poate face până la capăt şi apoi din nou de la început. Parcurgerea listei se face prin „saltul” între indicatori (P0, P1, ..., Pi, ...) iar vizitarea nodului i se face prin prelucrarea (sau pur şi simplu consultarea) valorii Ei. Fiindcă lista simplu înlănţuită nu poate fi parcursă decât de la „cap” (P0) la „coadă” (Pn) iar pentru revenirea către cap trebuie reluată parcurgerea de la cap, se foloseşte adesea lista dublu înlănţuită; aceasta prezintă două câmpuri indicator: unul spre dreapta (spre coadă) altul spre stânga (spre cap). Parcurgerea listei se poate face uşor în ambele sensuri prin „salturi” atât spre dreapta cât şi spre stânga. Cozi – numite şi liste FIFO („First În First Out” – primul intrat primul ieşit) sunt liste la care interesează în special cele două capete şi modurile cum se adaugă noi elemente sau se elimină elementele - pentru aceste tipuri de liste introducerea / eliminarea de elemente se face doar prin capete. Stive – numite şi liste LIFO („Last În First Out” – ultimul intrat primul ieşit) – care seamănă cu un pachet de cărţi de joc: adăugarea de noi elemente se face prin capătul de sus (vârful stivei) iar eliminarea la fel. Acest tip de listă este util pentru cazurile când prelucrările parcurg datele într-un sens iar apoi le parcurg în sens invers. 60