O listă legată este o structură de date dinamică de bază în informatică, constând din noduri care conțin date și legături („linkuri”) către nodul următor și/sau anterior al listei. [1] Avantajul fundamental față de o matrice este flexibilitatea structurală: ordinea elementelor unei liste legate poate să nu coincidă cu ordinea elementelor de date din memoria computerului [2] , iar ordinea de parcurgere a listei este întotdeauna stabilite în mod explicit de legăturile sale interne.
O listă liniară orientată individual este o structură de date constând din elemente de același tip, legate secvenţial prin pointeri. Fiecare element al listei are un pointer către următorul element. Ultimul element al listei indică NULL . Elementul spre care nu este indicat este primul element (cap) al listei. Aici, legătura de la fiecare nod indică către următorul nod din listă. Într-o listă conectată individual, vă puteți deplasa numai spre sfârșitul listei. Este imposibil să aflați adresa elementului anterior pe baza conținutului nodului curent.
În informatică , o listă liniară este de obicei definită ca un tip de date abstracte (ADT) care formalizează noțiunea de colecție ordonată de date . În practică, listele liniare sunt de obicei implementate folosind matrice și liste legate. Uneori, termenul „listă” este folosit și informal ca sinonim pentru „listă legată”. De exemplu, o listă mutabilă netipificată ADT poate fi definită ca un set de constructor și operații de bază:
folosind o listă legată individual:
struct list * l1 = ( struct list * ) malloc ( sizeof ( struct list )); l1 -> câmp = 1 ; l1 -> next = ( struct list * ) malloc ( sizeof ( struct list )); l1 -> următorul -> câmp = 2 ; l1 -> next -> next = ( struct list * ) malloc ( sizeof ( struct list )); /* etc. */ Listă dublu legată (listă dublu legată)Aici, legăturile din fiecare nod indică către nodul anterior și următorul din listă. La fel ca o listă legată unic, o listă dublu legată permite doar accesul secvenţial la elemente, dar permite şi mişcarea în ambele direcţii. În această listă, este mai ușor să ștergeți și să rearanjați elemente, deoarece adresele acelor elemente ale listei ai căror pointeri sunt direcționați către elementul care este schimbat sunt ușor accesibile.
Lista legată XORFolosit rar.
Un fel de listă legată este o listă inelară (ciclică, închisă). Poate fi, de asemenea, cu o singură legătură sau cu două legături. Ultimul element al unei liste circulare conține un indicator către primul, iar primul (în cazul unei liste dublu legate) la ultima.
De regulă, o astfel de structură este implementată pe baza unei liste liniare. Fiecare listă circulară stochează suplimentar un pointer către primul element. Nu există nicio referire la NULL în această listă.
Există, de asemenea, liste circulare cu un element cap dedicat pentru a facilita parcurgerea întregii liste.
Dezavantajele listelor legate provin din proprietatea lor principală - accesul secvenţial la date:
Structuri de date | |
---|---|
Liste | |
Copaci | |
Contează | |
Alte |