Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- insertAt(data, index) { //el nodo que ocupa la posición index será movido a la siguiente posición
- if(index < 0 || index > this.size)
- return null;
- const newNode = new Node(data, null, null);
- if( index == 0) { //Si se inserta como cabeza
- newNode.next = this.head; //no colocamos la variable current sino directamente la referencia a la cabecera
- this.head.prev = newNode; //el previo de la actual cabecera ya no será null, sino sera nuestro nuevo nodo cabeza
- this.head = newNode; //cambiamos la referencia de la cabeza actual a nuestro nuevo nodo
- }
- else if (index === this.size) { //Si se inserta como cola (en la última posición existente)
- newNode.prev = this.tail; //el anterior de nuestro nuevo nodo será la actual cola
- this.tail.next = newNode; //la referencia de siguiente de nuestra actual cola será nuestro nuevo nodo
- this.tail = newNode; //cambiamos la referencia de la cola actual a nuestro nuevo nodo
- }
- else { //Si se inserta en medio de dos posiciones
- 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
- for(let i = 0; i < index; i++)
- current = current.next; //se avanza de nodo hasta llegar a la posición que reemplazamos por nuestro nuevo nodo
- let previous = current.prev; //nodo anterior al de la posición que reemplazamos / = current.prev
- newNode.next = current; //el siguiente del nuevo nodo es el que ocupaba la posición que reemplazamos
- newNode.prev = previous; //el anterior del nuevo nodo es el anterior del que ocupaba la posición que reemplazamos
- current.prev = newNode;
- previous.next = newNode;
- }
- this.size++;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement