En sammenkædet liste er en grundlæggende dynamisk datastruktur inden for datalogi, bestående af noder, der indeholder data og links ("links") til den næste og/eller forrige node på listen. [1] Den grundlæggende fordel i forhold til et array er strukturel fleksibilitet: rækkefølgen af elementerne i en sammenkædet liste falder muligvis ikke sammen med rækkefølgen af dataelementerne i computerens hukommelse [2] , og rækkefølgen af gennemgangen af listen er altid udtrykkeligt angivet af dets interne links.
En lineær enkelt-dirigeret liste er en datastruktur, der består af elementer af samme type, forbundet sekventielt gennem pointere. Hvert element på listen har en markør til det næste element. Det sidste element på listen peger på NULL . Det element, der ikke peges på, er det første (hoved) element på listen. Her peger linket ved hver node til den næste node på listen. I en enkelt linket liste kan du kun bevæge dig mod slutningen af listen. Det er umuligt at finde ud af adressen på det forrige element baseret på indholdet af den aktuelle node.
I datalogi er en lineær liste normalt defineret som en abstrakt datatype (ADT), der formaliserer begrebet en ordnet samling af data . I praksis implementeres lineære lister normalt ved hjælp af arrays og sammenkædede lister. Nogle gange bruges udtrykket "liste" også uformelt som et synonym for "linket liste". For eksempel kan en ADT for en utyperet mutabel liste defineres som et sæt konstruktører og grundlæggende operationer:
ved hjælp af en enkelt linket liste:
struct liste * l1 = ( struct liste * ) malloc ( sizeof ( struct liste )); l1 -> felt = 1 ; l1 -> næste = ( struct liste * ) malloc ( sizeof ( struct liste )); l1 -> næste -> felt = 2 ; l1 -> næste -> næste = ( struct liste * ) malloc ( sizeof ( struct liste )); /* etc. */ Dobbelt linket liste (dobbelt linket liste)Her peger linkene i hver node til den forrige og næste node på listen. Som en enkelt-linket liste tillader en dobbelt-linket liste kun sekventiel adgang til elementer, men den tillader også bevægelse i begge retninger. I denne liste er det nemmere at slette og omarrangere elementer, da adresserne på de elementer på listen, hvis pointer er rettet mod det element, der ændres, er let tilgængelige.
XOR linket listeSjældent brugt.
En slags sammenkædet liste er en ring (cyklisk, lukket) liste. Det kan også være enkelt- eller dobbelt-linket. Det sidste element i en cirkulær liste indeholder en pointer til den første, og den første (i tilfælde af en dobbelt kædet liste) til den sidste.
Som regel implementeres en sådan struktur på grundlag af en lineær liste. Hver cirkulær liste gemmer desuden en pointer til det første element. Der er ingen reference til NULL i denne liste.
Der er også cirkulære lister med et dedikeret hovedelement for at gøre det nemmere at gå gennem hele listen.
Ulemperne ved linkede lister stammer fra deres hovedegenskab - sekventiel adgang til data:
Datastrukturer | |
---|---|
Lister | |
Træer | |
Tæller | |
Andet |