Implementación del método enqueue en JavaScript
Clase 23 de 29 • Curso de Estructuras de Datos con JavaScript
Contenido del curso
Arrays y strings
- 4

Cómo funcionan arrays en memoria de JavaScript
07:23 min - 5

Construcción de Arrays con Clases en JavaScript
09:33 min - 6

Métodos pop y delete en arrays
16:01 min - 7
Playground: crea tu propia implementación de unshift
- 8
Playground: crea tu propia implementación de shift
- 9

Inmutabilidad de Strings y Almacenamiento en Memoria
02:42 min
Hash Table
Linked List
- 15

Estructuras de Datos: Listas Enlazadas en JavaScript
05:20 min - 16

Estructura y Creación de una Lista Enlazada Simple en JavaScript
10:03 min - 17

Métodos para Manipular Nodos en Listas Enlazadas
12:12 min - 18

Inserta nodos intermedios sin romper enlaces en JavaScript
16:08 min - 19

Doubly Linked List con punteros bidireccionales
07:51 min
Stacks
Queues
Trees
Graphs
Cierre
Domina la implementación de un queue en JavaScript con una lógica clara y confiable. Aquí verás cómo manejar first, last y length, cómo enqueue agrega al final y cómo peek devuelve siempre el primer elemento. La clave está en enlazar nodos con next sin perder referencias, tal como en una linked list, y dejar lista la base para tu propio dequeue.
¿Qué es un queue y cómo se diferencia de stack?
Un queue es una estructura FIFO: el primer elemento en entrar es el primero en salir. A diferencia de un stack con top y bottom, aquí trabajamos con first y last. El método peek debe regresar siempre el elemento al frente, es decir, el first. Cuando se crea la instancia, comienza vacía y la vamos llenando con enqueue.
- Clase y nodos: un Node con valor y puntero next.
- Estado del queue: first, last y length para controlar la estructura.
- Punteros: nunca dejes un nodo sin next si hay más elementos, para no perder referencias en memoria.
- Prueba mental: al agregar 1, luego 2 y luego 3, first sigue en 1 y last avanza a 2 y luego a 3.
¿Cómo se implementa enqueue y peek en JavaScript?
La lógica de enqueue es agregar siempre al final. Si está vacío, el nuevo nodo es a la vez first y last. Si no, se enlaza con last.next y se actualiza last. El método peek retorna el first sin modificar la estructura.
¿Cómo luce la clase queue con first, last y length?
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor() {
this.first = null;
this.last = null;
this.length = 0;
}
peek() {
return this.first;
}
enqueue(value) {
const newNode = new Node(value);
if (this.length === 0) {
this.first = newNode;
this.last = newNode;
} else {
this.last.next = newNode;
this.last = newNode;
}
this.length++;
return this; // para visualizar el estado actual.
}
// dequeue(): pendiente, elimina el elemento al frente.
}
¿Qué hace enqueue cuando la lista está vacía?
if (this.length === 0) {
this.first = newNode;
this.last = newNode;
}
- Primer elemento: se vuelve first y last.
- Estructura consistente: no hay nodos sueltos.
¿Cómo enlazar nodos con next y actualizar last?
else {
this.last.next = newNode;
this.last = newNode;
}
- Encadenamiento: last.next apunta al nuevo nodo.
- Avance del final: last se actualiza al nuevo nodo.
¿Cómo probar y qué falta con dequeue?
Puedes replicar la prueba en consola: crear la instancia, agregar tres valores y consultar el frente con peek. Verás que el primero en entrar se mantiene al frente y last avanza con cada inserción.
- Crear instancia:
const queue = new Queue();empieza vacía. - Agregar 1:
queue.enqueue(1)el first y last son 1. - Agregar 2:
queue.enqueue(2)el first sigue en 1, last pasa a 2. - Agregar 3:
queue.enqueue(3)el last ahora es 3 y el encadenamiento es 1 → 2 → 3 por next. - Consultar frente:
queue.peek()devuelve siempre el first. - Tu reto: implementar dequeue para “eliminar siempre el elemento que esté hasta adelante”, similar a un pop pero aplicado al frente del queue.
¿Te quedó alguna duda o quieres compartir tu implementación de dequeue o tu avance hacia tree? Cuéntame en comentarios y revisamos juntos.