Articles

Singly Linked List i JavaScript

för att få en klar förståelse för singly linked list, implementerar jag LinkedList-klassen i JavaScript.

varje nod i länkad lista kommer att ha två attribut: värde & nästa, och länkad lista kommer att ha huvud, svans och längd attribut.

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

tryck

hur kan vi driva en ny nod i slutet av vår lista? Låt oss göra en push-funktion. Först måste vi skapa en ny nod med det angivna värdet, kontrollera om listan har ett huvud (är det tomt?) och glöm inte att öka storleken på listan.

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

Pop

med pushing måste vi tänka på popping, radera det sista elementet. Om det inte finns någon nod, returnera odefinierad, annars, slinga genom listan tills vi når svansen, Ställ in nästa egenskap för den näst sista noden för att vara null, gör den näst sista för att vara svansen, glöm inte att minska storleken på listan.

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

Skift

för att radera det första elementet, skifta, som vanligt, kontrollera om listan är tom. Först lagra det aktuella huvudet i en variabel, Ställ in huvudet för att vara det aktuella huvudets nästa, minska längden.

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

Unshift

om du vill infoga en nod i början av listan, kontrollera om listan är tom, om inte, ställer vi in det aktuella huvudet för att vara det nästa attribut för den inkommande noden, öka storleken.

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

Get

Även om länkad lista inte har index, kan vi fortfarande hitta noden med givet index. Kontrollera först att det angivna indexet är större än noll och mindre eller lika med längden på listan. Än vi slingrar igenom listan tills vi når indexet.

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

Set

Vad händer om vi vill ändra en nod i vår lista? Vi hittar noden med get () och ställer in noden med givna data.

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

infoga

När vi vill infoga en ny nod i listan, kontrollera först om indexet är större än 0 och mindre än längden. Om index är längden använder vi bara push(), om indexet är 0 använder vi unshift(). För andra index måste vi få noden vid index-1 och ställa in nästa egenskap för den noden för att vara den nya noden och nästa egenskap för den nya noden för att vara den föregående nästa egenskapen, då ökar vi längden.

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

Ta bort

Till skillnad från pop och unshift, tar bort funktionen bort noden med givet index. Kontrollera som vanligt om indexet är giltigt, om index är lika med Längd-1 eller 0, använd pop eller shift. Annars får vi noden vid index-1, Ställ in nästa egenskap på den noden för att vara nästa av nästa egenskap, efter minskar vi storleken.

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

omvänd

den ultimata omvända frågan! Hur vänder vi listan? Först byter vi huvud och svans, förklarar nästa och föregående, ställer in föregående som null. Vi går igenom listan.

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