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 punteros y malloc/free |
| 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 |
Los arrays ofrecen mayor densidad y predictibilidad. Las listas añaden punteros pero liberan memoria cuando los nodos se reciclan. Un heap en arreglo comparte las ventajas del array, aunque requiere planificar el tamaño máximo o alternar con realloc bajo demanda.
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 liberen el mismo nodo. Las colas de prioridad necesitan regiones críticas que abarcan toda la operación de sift para evitar reorganizaciones inconsistentes.
Responde estas preguntas antes de elegir: