Advertisement
Guest User

Función insertAt - Lista doblemente enlazada

a guest
Apr 7th, 2020
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. insertAt(data, index) { //el nodo que ocupa la posición index será movido a la siguiente posición
  2.         if(index < 0 || index > this.size)
  3.             return null;
  4.  
  5.         const newNode = new Node(data, null, null);
  6.  
  7.         if( index == 0) { //Si se inserta como cabeza
  8.             newNode.next = this.head; //no colocamos la variable current sino directamente la referencia a la cabecera
  9.             this.head.prev = newNode; //el previo de la actual cabecera ya no será null, sino sera nuestro nuevo nodo cabeza
  10.             this.head = newNode; //cambiamos la referencia de la cabeza actual a nuestro nuevo nodo
  11.         }
  12.         else if (index === this.size) { //Si se inserta como cola (en la última posición existente)
  13.             newNode.prev = this.tail; //el anterior de nuestro nuevo nodo será la actual cola
  14.             this.tail.next = newNode; //la referencia de siguiente de nuestra actual cola será nuestro nuevo nodo
  15.             this.tail = newNode; //cambiamos la referencia de la cola actual a nuestro nuevo nodo
  16.         }
  17.         else { //Si se inserta en medio de dos posiciones
  18.             let current = this.head; //nodo al que vamos a reemplazar de posición, se inicializa en el nodo de posición cero, osea la cabeza
  19.  
  20.             for(let i = 0; i < index; i++)
  21.                 current = current.next; //se avanza de nodo hasta llegar a la posición que reemplazamos por nuestro nuevo nodo
  22.  
  23.             let previous = current.prev; //nodo anterior al de la posición que reemplazamos /  = current.prev
  24.  
  25.             newNode.next = current; //el siguiente del nuevo nodo es el que ocupaba la posición que reemplazamos
  26.             newNode.prev = previous; //el anterior del nuevo nodo es el anterior del que ocupaba la posición que reemplazamos
  27.  
  28.             current.prev = newNode;
  29.             previous.next = newNode;
  30.         }
  31.         this.size++;
  32.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement