Reunimos en una sola vista las variantes de colas estudiadas (lineal, circular, listas enlazadas, deque, prioridad y heap) para facilitar la elección según las restricciones de memoria, complejidad y concurrencia. Cada estructura nace de un compromiso distinto entre simplicidad y flexibilidad.
| Estructura | Complejidad encolado/desencolado | Memoria | Ventajas clave | Limitaciones |
|---|---|---|---|---|
| Cola lineal (array) | O(1) / O(1) | Tamaño fijo | Implementación simple, buena localidad de caché | Falsa saturación sin manejo circular |
| Cola circular | O(1) / O(1) | Tamaño fijo | Reutiliza espacios liberados | Requiere contador o casillero extra |
| Cola con lista enlazada | O(1) / O(1) | Dinámica | Capacidad elástica | Coste adicional de referencias y nodos |
| Deque | O(1) en ambos extremos | Fija o dinámica | Opera como pila o cola | Mayor complejidad de interfaz |
| Cola de prioridad (heap) | O(log n) / O(log n) | Fija o dinámica | Extrae el máximo/mínimo en O(1) | Implementación más extensa |
Las listas ofrecen mayor elasticidad a costa de referencias adicionales. Las estructuras basadas en arrays (incluyendo deque y heapq) brindan densidad y buena localidad, pero requieren definir o crecer la capacidad según el uso.
Colas lineales y circulares se benefician de mecanismos lock-free sencillos. Las listas enlazadas exigen protección más estricta para evitar que dos hilos toquen el mismo nodo. Las colas de prioridad necesitan regiones críticas que abarcan toda la operación de reorganización del heap para evitar estados inconsistentes.
Responde estas preguntas antes de elegir: