Articles

Enkelt Lenket Liste I JavaScript

for å få en klar forståelse av enkelt lenket liste, vil jeg implementere LinkedList klasse I JavaScript.

Hver node I Koblet liste vil ha to attributter: verdi & neste, og koblet liste vil ha attributt for hode, hale og lengde.

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

Trykk

Hvordan kan vi skyve en ny node inn i slutten av listen vår? La oss lage en push-funksjon. Først må vi opprette en ny node ved hjelp av den oppgitte verdien, sjekk om listen har et hode(er det tomt ?) og ikke glem å øke størrelsen på listen.

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

Pop

med å skyve, må vi tenke på å poppe, slette det siste elementet. Hvis det ikke er noen node, returner udefinert, ellers, sløyfe gjennom listen til vi når halen, sett den neste egenskapen til den nest siste noden til å være null, gjør den nest siste til å være halen, ikke glem å redusere størrelsen på listen.

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

Skift

for å slette det første elementet, skift, som vanlig, sjekk om listen er tom. Først lagrer du det nåværende hodet i en variabel, sett hodet til å være det nåværende hodets neste, reduser lengden.

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

Unshift

neste attributt for innkommende node, øke størrelsen.

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

Selv om lenket liste ikke har indekser, kan vi fortsatt finne noden ved gitt indeks. Først må du kontrollere at den oppgitte indeksen er større enn null og mindre eller lik lengden på listen. Enn vi går gjennom listen til vi når indeksen.

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

Sett

Hva om vi vil endre en node i listen vår? Vi finner noden med get (), og setter noden med gitte data.

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

Sett inn

når vi vil sette inn en ny node i listen, må du først sjekke om indeksen er større enn 0 og mindre enn lengden. Hvis indeksen er lengden, bruker vi bare push (), hvis indeksen er 0, bruker vi unshift (). For andre indekser må vi få noden på index-1, og angi neste egenskap for den noden til å være den nye noden, og den neste egenskapen til den nye noden til å være den forrige neste egenskapen, så øker vi lengden.

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

Fjern

i Motsetning til pop og unshift, fjerner funksjonen noden ved gitt indeks. Som vanlig, sjekk om indeksen er gyldig, hvis indeksen er lik lengde-1 eller 0, bruk pop eller shift. Ellers får vi noden på index-1, sett neste eiendom på den noden for å være den neste av neste eiendom, etter at vi reduserer størrelsen.

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

Omvendt

det ultimate omvendte spørsmålet! Hvordan reverserer vi listen? Først bytter vi hode og hale, erklærer neste og forrige, sett forrige som null. Vi går gjennom listen.

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