Articles

Singly Linked List in JavaScript

ahhoz, hogy egy világos megértése singly linked list, én végre LinkedList osztály JavaScript.

a Linkelt lista minden csomópontjának két attribútuma lesz: value & next, a linkelt listának pedig fej, farok és hossz attribútuma lesz.

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

Push

hogyan tolhatunk be egy új csomópontot a listánk végére? Csináljunk egy push funkciót. Először létre kell hoznunk egy új csomópontot a megadott érték felhasználásával, ellenőriznünk kell, hogy a listának van-e feje (üres?) és ne felejtsd el növelni a lista méretét.

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

Pop

a nyomással gondolkodnunk kell az utolsó elem törlésén. Ha nincs csomópont, térjen vissza meghatározatlanra, különben hurkolja át a listát, amíg el nem érjük a farokot, állítsa a második utolsó csomópont következő tulajdonságát nullára, tegye a második utolsót farokká, ne felejtse el csökkenteni a lista méretét.

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

Shift

az első elem törléséhez, a váltáshoz, mint mindig, ellenőrizze, hogy a lista üres-e. Először tárolja az aktuális fejet egy változóban, állítsa be a fejet az aktuális fej következő helyére, csökkentse a hosszát.

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

Unshift

ha csomópontot szeretne beszúrni a lista elejére, ellenőrizze, hogy a lista üres-e, ha nem, akkor az aktuális fejet úgy állítjuk be, hogy az a bejövő csomópont következő attribútuma, növelje a méretet.

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

Get

annak ellenére, hogy a linkelt listában nincsenek indexek, még mindig képesek vagyunk megtalálni a csomópontot az adott index alapján. Először győződjön meg arról, hogy az adott index nagyobb, mint nulla, kisebb vagy egyenlő a lista hosszával. Aztán végigjárjuk a listát, amíg el nem érjük az indexet.

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

Set

mi van, ha meg akarunk változtatni egy csomópontot a listánkban? Megtaláljuk a csomópontot a get(), és állítsa be a csomópontot adott adatokkal.

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

Insert

amikor új csomópontot akarunk beszúrni a listába, először ellenőrizzük, hogy az index nagyobb-e 0-nál és kisebb-e a hossznál. Ha az index a hossz, akkor csak a push () – t használjuk, ha az index 0, akkor az unshift () – t használjuk. Más indexek, meg kell, hogy a csomópont az index-1, és állítsa be a következő tulajdonsága, hogy a csomópont, hogy az új csomópont, és a következő tulajdonsága az új csomópont, hogy az előző következő tulajdonság, akkor növeljük a hosszát.

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

Remove

a pop-tól és az unshift-től eltérően az eltávolítás funkció eltávolítja a csomópontot az adott index alapján. A szokásos módon ellenőrizze, hogy az index érvényes-e, ha az index egyenlő a hosszúsággal-1 vagy 0, használja a pop vagy a shift alkalmazást. Ellenkező esetben megkapjuk a csomópontot az index-1-nél, állítsuk be a csomópont következő tulajdonságát, hogy a következő tulajdonság következő legyen, miután csökkentjük a méretet.

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

fordított

a végső fordított kérdés! Hogyan fordítsuk meg a listát? Először cseréljük a fejet és a farokot, deklaráljuk a következőt és az előzőt, az előzőt nullára állítjuk. Végigjárjuk a listát.

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