Singly Linked List i JavaScript
for at få en klar forståelse af singly linked list, implementerer jeg LinkedList class i JavaScript.
hver node af linket liste vil have to attributter: værdi & næste, og linket liste vil have hoved, hale og længde attribut.
Push
hvordan kan vi skubbe en ny node i slutningen af vores liste? Lad os lave en push-funktion. Først skal vi oprette en ny node ved hjælp af den givne værdi, kontrollere om listen har et hoved (er det tomt?) og glem ikke at øge størrelsen på listen.
Pop
med pushing skal vi tænke på at poppe, slette det sidste element. Hvis der ikke er nogen node, skal du vende tilbage udefineret, ellers, løbe gennem listen, indtil vi når halen, indstil den næste egenskab for den næstsidste node til at være null, gør den næstsidste til at være halen, glem ikke at formindske størrelsen på listen.
Skift
for at slette det første element, skift som normalt, kontroller, om listen er tom. Først skal du gemme det aktuelle hoved i en variabel, indstille hovedet til at være det aktuelle Hoveds næste, Formindsk længden.
næste attribut for den indkommende node, øg størrelsen.
Get
selvom linket liste ikke har indekser, kan vi stadig finde noden ved givet indeks. Sørg først for, at det givne indeks er større end nul og mindre eller lig med længden på listen. Så løber vi gennem listen, indtil vi når indekset.
Set
Hvad hvis vi vil ændre en node i vores liste? Vi finder noden med get () og indstiller noden med givne data.
Indsæt
Når vi vil indsætte en ny node i listen, skal du først kontrollere, om indekset er større end 0 og mindre end længden. Hvis indekset er længden, bruger vi bare push(), hvis indekset er 0, bruger vi unshift(). For andre indekser skal vi få noden ved indekset-1 og indstille den næste egenskab for den node til at være den nye node, og den næste egenskab for den nye node til at være den forrige næste egenskab, så øger vi længden.
Fjern
i modsætning til pop og unshift fjerner funktionen noden ved givet indeks. Som sædvanligt skal du kontrollere, om indekset er gyldigt, hvis indekset er lig med længden-1 eller 0, skal du bruge pop eller shift. Ellers får vi noden ved indekset-1, Indstil den næste egenskab på den node til at være den næste af den næste ejendom, efter at vi formindsker størrelsen.
Reverse
det ultimative omvendte spørgsmål! Hvordan ændrer vi listen? Først bytter vi hoved og hale, erklærer næste og forrige, indstiller den forrige som null. Vi løber gennem listen.