Articles

lista singly legate în JavaScript

pentru a avea o înțelegere clară a listei singly legate, voi pune în aplicare clasa LinkedList în JavaScript.

fiecare nod al listei legate va avea două atribute: valoare& următor, iar lista legată va avea atributul cap, coadă și lungime.

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

Push

cum putem împinge un nou nod în sfârșitul listei noastre? Să facem o funcție de împingere. În primul rând, trebuie să creăm un nou nod folosind valoarea dată, să verificăm dacă Lista are un cap (este goală?) și nu uitați să măriți dimensiunea listei.

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

Pop

cu împingerea, trebuie să ne gândim la popping, ștergerea ultimului element. Dacă nu există un nod, reveniți nedefinit, altfel, treceți prin listă până ajungem la coadă, setați următoarea proprietate a celui de-al doilea ultim nod să fie nulă, faceți ca al doilea ultim să fie coada, nu uitați să decrementați dimensiunea listei.

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

Shift

pentru ștergerea primului element, schimbarea, ca de obicei, verificați dacă lista este goală. Mai întâi, stocați capul curent într-o variabilă, setați capul să fie următorul capului curent, decrementați lungimea.

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

Unshift

pentru a insera un nod la începutul listei, verificați dacă lista este goală, dacă nu, setăm capul curent pentru a următorul atribut al nodului de intrare, Creșteți dimensiunea.

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

Get

chiar dacă lista legată nu are indexuri, suntem încă capabili să găsim nodul după indexul dat. Mai întâi asigurați-vă că indicele dat este mai mare decât zero și mai mic sau egal cu lungimea listei. Decât să parcurgem lista până ajungem la index.

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

Set

Ce se întâmplă dacă vrem să schimbăm un nod în lista noastră? Găsim nodul cu get () și setăm nodul cu date date.

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

Inserare

când dorim să introducem un nod nou în listă, verificați mai întâi dacă indicele este mai mare de 0 și mai mic decât lungimea. Dacă indicele este lungimea, vom folosi doar push (), în cazul în care indicele este 0, vom folosi unshift (). Pentru alți indici, trebuie să obținem nodul la index-1 și să setăm următoarea proprietate a acelui nod să fie noul nod, iar următoarea proprietate a noului nod să fie proprietatea următoare anterioară, apoi incrementăm lungimea.

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

Remove

spre deosebire de pop și unshift, funcția remove va elimina nodul de index dat. Ca de obicei, verificați dacă indexul este valid, dacă indexul este egal cu lungimea-1 sau 0, utilizați pop sau shift. În caz contrar, obținem nodul la index-1, setăm următoarea proprietate pe acel nod pentru a fi următoarea proprietate următoare, după aceea, decrementăm dimensiunea.

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

Reverse

Ultima întrebare inversă! Cum inversăm lista? În primul rând, schimbăm capul și coada, declarăm următorul și Precedentul, setăm precedentul ca nul. Trecem prin listă.

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