Articles

Lista Ligada sencilla en JavaScript

Para tener una comprensión clara de la lista ligada sencilla, me voy a poner en práctica LinkedList clase en JavaScript.

Cada nodo de la lista enlazada tendrá dos atributos: value & next, y la lista enlazada tendrá los atributos head, tail y length.

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

Push

¿Cómo podemos empujar un nuevo nodo al final de nuestra lista? Hagamos una función push. Primero, necesitamos crear un nuevo nodo usando el valor dado, verificar si la lista tiene un encabezado (¿está vacía?) y no olvides aumentar el tamaño de la lista.

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

Pop

Con empujones, necesitamos pensar acerca de estallar, la eliminación del último elemento. Si no hay nodo, devuelve indefinido, de lo contrario, recorre la lista hasta que lleguemos a la cola, establece la siguiente propiedad del penúltimo nodo como null, haz que el penúltimo sea la cola, no olvides disminuir el tamaño de la lista.

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

Cambio

Para eliminar el primer elemento, desplazamiento, como de costumbre, compruebe si la lista está vacía. Primero, almacene la cabeza actual en una variable, configure la cabeza para que sea la siguiente de la cabeza actual, disminuya la longitud.

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

Unshift

Para insertar un nodo al principio de la lista, verifique si la lista está vacía, si no, configuramos el encabezado actual para que sea el siguiente atributo del nodo entrante, incrementa el tamaño.

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

Get

aunque la lista enlazada no tiene índices, que todavía son capaces de encontrar el nodo de índice dado. Primero asegúrese de que el índice dado sea mayor que cero y menor o igual a la longitud de la lista. Luego recorremos la lista hasta llegar al índice.

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

Set

¿Qué pasa si queremos cambiar un nodo en nuestra lista? Encontramos el nodo con get (), y establecemos el nodo con los datos dados.

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

Insertar

Cuando queremos insertar un nuevo nodo en la lista, compruebe primero si el índice es mayor que 0 y menor que la longitud. Si index es la longitud, solo usamos push (), si el índice es 0, usamos unshift (). Para otros índices, necesitamos obtener el nodo en el índice-1, y establecer la siguiente propiedad de ese nodo para que sea el nuevo nodo, y la siguiente propiedad del nuevo nodo para que sea la siguiente propiedad anterior, luego incrementamos la longitud.

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

Eliminar

a Diferencia de pop y unshift, quitar la función de eliminar el nodo de índice dado. Como de costumbre, compruebe si el índice es válido, si el índice es igual a length-1 o 0, use pop o shift. De lo contrario, obtenemos el nodo en el índice-1, establecemos la siguiente propiedad en ese nodo para que sea la siguiente de la siguiente propiedad, después, disminuimos el tamaño.

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

Invertir

El último inversa pregunta! ¿Cómo invertimos la lista? Primero, intercambiamos cabeza y cola, declaramos siguiente y anterior, establecemos el anterior como nulo. Recorremos la lista.

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