Queues

Introducción a las colas (Queues)
Una cola es una estructura de datos muy similar a una pila (stack), pero con una diferencia fundamental: en una cola, el primer elemento que se inserta es el primero que se elimina. A este comportamiento se le conoce como FIFO (First In, First Out), es decir, “primero en entrar, primero en salir”.
En contraste, las pilas son estructuras LIFO (Last In, First Out), donde el último elemento insertado es el primero en salir.
Podemos pensar en una cola de programación igual que en una fila de personas en el mundo real: las personas se unen por la parte trasera y salen por la parte delantera cuando llega su turno. Las colas funcionan exactamente del mismo modo en un programa: los elementos se agregan al final y se eliminan desde el frente.
⚙️ Aplicaciones de las colas
Las colas se utilizan cuando un recurso debe ser compartido entre múltiples consumidores, de manera ordenada y secuencial. Algunos ejemplos comunes incluyen:
- 🖨️ Sistemas de impresión: las tareas de impresión se almacenan en una cola y se procesan en el orden en que fueron enviadas.
- 🧠 Sistemas operativos: los procesos esperan en una cola para obtener tiempo de CPU.
- 🌐 Servidores web: las solicitudes entrantes de los usuarios se encolan y se atienden en el orden en que llegan.
- 💬 Sistemas de soporte en línea: cuando un usuario solicita ayuda, su turno se gestiona mediante una cola; cada cliente es atendido según su posición.
En todos estos casos, la cola actúa como un mecanismo justo y eficiente de asignación de recursos, garantizando que las tareas sean atendidas en el orden de llegada.
⚡ Operaciones básicas y complejidad
Las colas admiten un conjunto de operaciones estándar, todas con tiempo de ejecución constante ( O(1) ):
| Operación | Descripción | Complejidad |
|---|---|---|
enqueue |
Agrega un elemento al final de la cola | ( O(1) ) |
dequeue |
Elimina el elemento al frente de la cola | ( O(1) ) |
peek |
Devuelve el elemento del frente sin eliminarlo | ( O(1) ) |
isEmpty |
Verifica si la cola está vacía | ( O(1) ) |
isFull |
Verifica si la cola está llena (solo en colas con tamaño fijo) | ( O(1) ) |
Gracias a que los elementos solo se agregan o eliminan en los extremos, las colas son estructuras muy eficientes y predecibles.