Articles

lista única ligada em JavaScript

para ter uma compreensão clara da lista única ligada, vou implementar classe LinkedList em JavaScript.

cada nó da lista ligada terá dois atributos: value & next, and linked list will have head, tail and length attribute.

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

Premir

Como podemos empurrar um novo nó para o fim da nossa lista? Vamos fazer um push funcionar. Primeiro, precisamos criar um novo nó usando o valor indicado, verificar se a lista tem uma cabeça (está vazia?) e não se esqueça de aumentar o tamanho da lista.

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

Pop

Com empurrando, precisamos pensar sobre o popping, excluindo o último elemento. Se não houver nenhum nó, retorne indefinido, senão, loop através da lista até chegarmos à cauda, defina a próxima propriedade do segundo último nó para ser nulo, faça o segundo último para ser a cauda, não se esqueça de decretar o tamanho da lista.

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

Shift

Para excluir o primeiro elemento, a mudança, como de costume, verifique se a lista está vazia. Primeiro, armazenar a cabeça atual em uma variável, definir a cabeça para ser a próxima da cabeça atual, decretar o comprimento.

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

Unshift

Para inserir um nó no início da lista, verifique se a lista está vazia, se não, vamos definir o atual chefe para ser o próximo atributo do nó de entrada, aumente o tamanho.

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

apesar de lista ligada não tem índices, ainda somos capazes de encontrar o nó por determinado índice. Primeiro certifique-se de que o índice indicado é maior que zero e menor ou igual ao comprimento da lista. Do que percorrer a lista até chegarmos ao índice.

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

Set

o Que se queremos mudar um nó na nossa lista? Nós encontramos o nó com o get(), e configuramos o nó com dados indicados.

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

Inserir

Quando queremos inserir um novo nó na lista, verifique, primeiro, se o índice for maior que 0 e menor do que o comprimento. Se o índice é o comprimento, nós apenas usamos push (), se o índice é 0, nós usamos unshift (). Para outros índices, precisamos obter o nó no índice-1 e defina a seguinte propriedade do nó para ser o novo nó, e a próxima propriedade do novo nó a ser o anterior próximo propriedade, em seguida, é aumentar o comprimento.

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

Remover

ao contrário do pop e unshift, remova a função de remover o nó por determinado índice. Como de costume, verifique se o índice é válido, se o índice for igual ao comprimento-1 ou 0, use pop ou shift. Caso contrário, nós obtemos o nó no índice-1, configuramos a próxima propriedade nesse nó para ser a próxima da próxima propriedade, depois, nós decretamos o tamanho.

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

Inverter

O ultimate inverter a pergunta! Como invertemos a lista? Primeiro, trocamos a cabeça e a cauda, declaramos o próximo e o anterior como nulo. Analisamos a lista.

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