Articles

Singly Linked List v JavaScriptu

Chcete-li mít jasnou představu o singly linked list, implementuji třídu LinkedList v JavaScriptu.

každý uzel propojeného seznamu bude mít dva atributy: hodnota & další a propojený seznam bude mít atribut hlava, ocas a délka.

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

Push

Jak můžeme tlačit nový uzel na konec seznamu? Udělejme funkci push. Nejprve musíme vytvořit nový uzel pomocí dané hodnoty, zkontrolovat, zda má seznam hlavu(je prázdná?) a nezapomeňte zvýšit velikost seznamu.

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

Pop

S tlačí, musíme přemýšlet o tom, praskání, mazání posledního prvku. Pokud neexistuje žádný uzel, vraťte se nedefinovaný, jinak, projděte seznamem, dokud nedosáhneme ocasu, nastavte další vlastnost druhého posledního uzlu na null, druhý poslední bude ocasem, nezapomeňte zmenšit velikost seznamu.

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

Shift

Pro smazání prvního prvku, řazení, jako obvykle, zkontrolujte, zda seznam je prázdný. Nejprve uložte aktuální hlavu do proměnné, nastavte hlavu tak, aby byla další aktuální hlavou, snižte délku.

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

Unshift

vložit uzel na začátku seznamu, zkontrolujte, zda seznam je prázdný, pokud ne, nastavíme současný šéf bude další atribut příchozí uzel, přírůstek velikosti.

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

I když spojový seznam nemusí indexy, jsme stále schopni najít uzel tím, že daný index. Nejprve se ujistěte, že daný index je větší než nula a menší nebo roven délce seznamu. Pak procházíme seznamem, dokud nedosáhneme indexu.

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

Co když budeme chtít změnit uzel v našem seznamu? Najdeme uzel s get () a nastavíme uzel s danými daty.

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

Vložit

Když chceme vložit nový uzel do seznamu, nejprve zkontrolujte, je-li index je větší než 0 a menší než délka. Pokud je index délka, použijeme pouze push (), pokud je index 0, použijeme unshift (). Pro jiné indexy, musíme si uzel na indexu-1, a nastavit další vlastnosti, které uzel nový uzel, a další majetek nový uzel, který bude předchozí další nemovitost, pak jsme přírůstek délky.

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

Odstranit

na Rozdíl od pop a unshift, odstranit funkce odstranit uzel tím, že daný index. Jako obvykle zkontrolujte, zda je index platný, pokud se index rovná délce-1 nebo 0, použijte pop nebo shift. V opačném případě dostaneme uzel na index-1, nastavíme další vlastnost na tomto uzlu jako další z další vlastnosti, poté zmenšíme velikost.

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

Reverzní

konečný zpětný dotaz! Jak zvrátíme seznam? Nejprve zaměníme hlavu a ocas, deklarujeme další a předchozí, nastavíme předchozí jako null. Procházíme seznamem.

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