Stack y Queue son estructuras de datos abstractas que definen restricciones sobre el orden de acceso:
- Stack (pila): LIFO — Last In, First Out. El último elemento añadido es el primero en salir.
- Queue (cola): FIFO — First In, First Out. El primer elemento añadido es el primero en salir.
Son las estructuras más fundamentales después de arrays y linked lists, con aplicaciones en parsing, scheduling, BFS, y más.
Stack (Pila)
Operaciones:
- Push(x): añade
xal top. - Pop(): elimina y retorna el top.
- Peek(): retorna el top sin eliminarlo.
- isEmpty(): ¿la pila está vacía?
Implementación: array-backed (push/pop en el final) o linked-backed (push/pop en head).
Queue (Cola)
Operaciones:
- Enqueue(x): añade
xal rear. - Dequeue(): elimina y retorna el front.
- Front(): retorna el front sin eliminarlo.
- isEmpty(): ¿la cola está vacía?
Implementación: array-backed con circular buffer o linked-backed (enqueue en tail, dequeue en head).
Deque (Double-Ended Queue)
Permite inserción/eliminación en ambos extremos. Combinación de stack y queue.
Operaciones: push_front, push_back, pop_front, pop_back.
Comparación
| Estructura | Orden | Acceso | Aplicaciones |
|---|---|---|---|
| Stack | LIFO | Solo top | Undo, parsing, DFS |
| Queue | FIFO | Solo extremos | BFS, scheduling, buffers |
| Deque | Doble extremo | Ambos extremos | Sliding window, palíndromos |
Aplicaciones
- Function call stack — recursion, expression evaluation
- Undo/Redo — stack de estados previos
- BFS — queue de nodos por explorar
- CPU scheduling — round-robin, FCFS
- Sliding window — deque para máximo en ventana móvil
Casos Extremos
- Stack overflow — recursión profunda sin tail-call optimization
- Queue overflow — buffer circular sin espacio
- Empty structure — pop/dequeue en estructura vacía es error
- Thread safety — stacks y queues necesitan locks en concurrencia
Trayectoria de Práctica
- Implementa stack con array; prueba push/pop/peek.
- Implementa queue con linked list; prueba enqueue/dequeue.
- Implementa validación de paréntesis con stack.
- Implementa BFS con queue.
- Investiga deque: ¿cómo resuelve sliding window máximo?