Articles

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.

https://gist.github.com/GAierken/eb9583bc1ffa78b8e1bb7438a7a49014

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.

https://gist.github.com/GAierken/4e44162c8fefe746680e67ea65bf9397

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.

https://gist.github.com/GAierken/2c24fecb26f7453879ab471190fcba1e

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.

https://gist.github.com/GAierken/e6a11cdaf63d9620db33cef58d0a9507

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.

https://gist.github.com/GAierken/95cbf790f1b6e03711f2460eb7951aa4

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.

https://gist.github.com/GAierken/6475bb388fe8b0f2b7f6507bb3cab446

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.

https://gist.github.com/GAierken/e9b0bb11849219914e2b3ee7b215d5d2

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.

https://gist.github.com/GAierken/08c88867ddb514de6ef4ddb3923a4117

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.

https://gist.github.com/GAierken/e888104f65a836925b11e102584edd76

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.

https://gist.github.com/GAierken/556c13f4ccbc5bcd49584bd662b553de