//create a Node class that will represent elements/nodes in the Queue class Node { constructor(value) { this.value = value; this.next = null; } } //creates a Queue class to store the elements/nodes of the Queue class Queue { constructor() { this.first = null; this.last = null; this.size = 0; } //enqueues a node enqueue(val) { let node = new Node(val); if (this.size === 0) { this.first = node; this.last = node; } else { this.last.next = node; this.last = node; } return this.size++; } //dequeues a node dequeue() { if (!this.first) { return null; } let temp = this.first; if (this.first === this.last) { this.last = null; } this.first = this.first.next; this.size--; return temp.value; } }Estaba siguiendo un artículo sobre medio sobre cómo implementar pilas y colas con JavaScript. Estaba perdido en lo que respecta a las colas, específicamente la forma en que el autor implementó la puesta en cola. En los últimos bits del método "enqueue", escribe
{ this.last.next = node; this.last = node; }¿No se sobrescribiría el elemento anterior con esta implementación? ¿Qué me estoy perdiendo?
this.last.next será null , no hay nada después del último elemento.
this.last.next = node; crea un vínculo desde el último nodo actual hasta el nuevo elemento, luego this.last = node; establece el último nodo actual en el nodo que se acaba de insertar. Sin embargo, el último nodo anterior todavía está en la lista vinculada.