Articles

Elenco collegato singolarmente in JavaScript

Per avere una chiara comprensione della lista collegata singolarmente, implementerò la classe LinkedList in JavaScript.

Ogni nodo della lista Collegata avrà due attributi: value& next, e la lista collegata avrà l’attributo head, tail e length.

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

Push

Come possiamo spingere un nuovo nodo alla fine della nostra lista? Facciamo una funzione push. Innanzitutto, dobbiamo creare un nuovo nodo usando il valore dato, controllare se l’elenco ha una testa (è vuoto?) e non dimenticare di incrementare la dimensione della lista.

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

Pop

Con pushing, dobbiamo pensare a popping, eliminando l’ultimo elemento. Se non c’è nessun nodo, restituisci undefined, else, fai scorrere l’elenco fino a raggiungere la coda, imposta la proprietà successiva del penultimo nodo come null, fai in modo che il penultimo sia la coda, non dimenticare di decrementare la dimensione dell’elenco.

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

Shift

Per eliminare il primo elemento, spostando, come al solito, controllare se l’elenco è vuoto. In primo luogo, memorizzare la testa corrente in una variabile, impostare la testa per essere la testa corrente del prossimo, decrementare la lunghezza.

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

Unshift

Per inserire un nodo all’inizio dell’elenco, verificare se l’elenco è vuoto, se non abbiamo impostato l’attuale capo di essere il prossimo attributo di arrivo nodo, incrementare la misura.

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

Get

Anche se la lista collegata non ha indici, siamo ancora in grado di trovare il nodo per indice dato. Per prima cosa assicurati che l’indice dato sia maggiore di zero e minore o uguale alla lunghezza dell’elenco. Di quanto scorriamo la lista fino a raggiungere l’indice.

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

Imposta

Cosa succede se vogliamo cambiare un nodo nella nostra lista? Troviamo il nodo con get () e impostiamo il nodo con dati dati.

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

Inserisci

Quando si desidera inserire un nuovo nodo nella lista, in primo luogo verificare se l’indice è maggiore di 0 e minore della lunghezza. Se index è la lunghezza, usiamo solo push (), se l’indice è 0, usiamo unshift (). Per altri indici, dobbiamo ottenere il nodo all’indice-1 e impostare la proprietà next di quel nodo come nuovo nodo e la proprietà next del nuovo nodo come precedente proprietà next, quindi incrementiamo la lunghezza.

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

Rimuovi

A differenza di pop e unshift, la funzione rimuovi rimuoverà il nodo in base all’indice specificato. Come al solito, controlla se l’indice è valido, se l’indice è uguale a length-1 o 0, usa pop o shift. Altrimenti, otteniamo il nodo all’indice-1, impostiamo la proprietà next su quel nodo come la prossima della proprietà next, dopo, decrementiamo la dimensione.

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

Reverse

L’ultima domanda inversa! Come invertiamo la lista? Per prima cosa, scambiamo testa e coda, dichiariamo successivo e precedente, impostiamo il precedente come nullo. Scorriamo la lista.

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