Singly Linked List in JavaScript
om een duidelijk begrip van singly linked list te hebben, implementeer ik LinkedList class in JavaScript.
elk knooppunt van gekoppelde lijst zal twee attributen hebben: waarde & volgende, en gekoppelde lijst zal head, tail en length attribuut hebben.
Push
Hoe kunnen we een nieuwe node naar het einde van onze lijst pushen? Laten we een push-functie maken. Eerst moeten we een nieuw knooppunt maken met behulp van de gegeven waarde, controleer of de lijst een head heeft (is het leeg?) en vergeet niet om de grootte van de lijst te verhogen.
Pop
met pushen moeten we nadenken over popping en het laatste element verwijderen. Als er geen knoop is, retourneer undefined, anders, loop door de lijst totdat we de staart bereiken, stel de volgende eigenschap van de op een na laatste knoop in op null, maak de op een na laatste om de staart te zijn, vergeet niet om de grootte van de lijst te verlagen.
Shift
controleer of de lijst leeg is om het eerste element te verwijderen door zoals gewoonlijk te verschuiven. Sla eerst de huidige kop op in een variabele, stel de kop in op de volgende van de huidige kop, verminder de lengte.
Unshift
om een knooppunt in te voegen aan het begin van de lijst, controleer of de lijst leeg is, zo niet, stellen we de huidige head in op het volgende attribuut van de inkomende node, verhoog de grootte.
Get
hoewel de gekoppelde lijst geen indexen heeft, kunnen we de node nog steeds vinden op basis van een gegeven index. Controleer eerst of de gegeven index groter is dan nul en kleiner of gelijk aan de lengte van de lijst. Dan gaan we door de lijst tot we de index bereiken.
Set
Wat als we een knooppunt in onze lijst willen wijzigen? We vinden het knooppunt met get (), en stellen het knooppunt in met gegeven gegevens.
Insert
als we een nieuw knooppunt in de lijst willen invoegen, controleer dan eerst of de index groter is dan 0 en kleiner dan de lengte. Als index de lengte is, gebruiken we gewoon push(), als de index 0 is, gebruiken we unshift(). Voor andere indexen moeten we het knooppunt bij de index-1 krijgen en de volgende eigenschap van dat knooppunt Instellen om het nieuwe knooppunt te zijn, en de volgende eigenschap van het nieuwe knooppunt om de vorige volgende eigenschap te zijn, dan verhogen we de lengte.
verwijderen
In tegenstelling tot pop en unshift, zal de functie verwijderen de knoop verwijderen door een gegeven index. Controleer zoals gewoonlijk of de index geldig is, als de index gelijk is aan length-1 of 0, Gebruik pop of shift. Anders krijgen we het knooppunt bij de index-1, stellen we de volgende eigenschap op dat knooppunt in om de volgende van de volgende eigenschap te zijn, waarna we de grootte verlagen.
Reverse
de ultieme omgekeerde vraag! Hoe keren we de lijst om? Eerst wisselen we kop en staart, declareren volgende en vorige, stellen de vorige Als null. We halen de lijst door.