Deque en C: ejercicio resuelto
Deque en C: ejercicio resuelto
Si buscas deque en C ejercicio resuelto, aquí tienes la implementación con array circular que soporta inserción y extracción en ambos extremos en O(1). Un deque (double-ended queue, o cola de doble extremo) generaliza tanto la pila como la cola: se puede usar como cualquiera de los dos.
Con el array circular, los índices front y rear avanzan módulo CAPACIDAD, evitando desplazamiento de elementos.
Enunciado
Implementa un deque con capacidad fija de 8 elementos que soporte:
push_front(d, v): inserta al principio.push_back(d, v), inserta al final.pop_front(d): elimina y devuelve el elemento del principio.pop_back(d): elimina y devuelve el elemento del final.imprimir(d): muestra el contenido de frente a fondo.
Demuestra las cuatro operaciones con una secuencia de inserciones y extracciones.
Solución en C
Resultado esperado
Errores frecuentes
- No aplicar el módulo
CAPal calcularfrente - 1: en C, el operador%con números negativos puede dar resultado negativo; hay que usar(frente - 1 + CAP) % CAP. - Confundir el índice del fondo con
frente + tamaño: el fondo está en(frente + tamaño - 1) % CAP, ya quefrente + tamañoapunta a la primera posición libre. - No verificar si el deque está lleno antes de
push_frontopush_back: insertar cuandotamaño == CAPsobrescribe elementos existentes. - Inicializar
frentea un valor distinto de 0: para simplificar,frente = 0ytamaño = 0es la inicialización estándar.
Aplicación práctica
El deque se usa en la implementación de algoritmos de ventana deslizante (máximo/mínimo en ventana de tamaño k), en la planificación de tareas (inserción y extracción en ambos extremos), como estructura base de la búsqueda en anchura (BFS) bidireccional y en simuladores de colas con prioridad en los extremos.
Siguiente ejercicio recomendado
- Cola en C: ejercicio resuelto
- Min-heap en C: ejercicio resuelto
- Trie en C: ejercicio resuelto
- Todos los ejercicios de C
Práctica guiada y libro completo
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Cuál es la diferencia entre un deque y una cola normal?
Una cola (FIFO) solo permite insertar por el fondo y extraer por el frente. Un deque permite insertar y extraer por ambos extremos. El deque es un superconjunto: puede simular tanto una cola (usando solo push_back y pop_front) como una pila (usando solo push_back y pop_back).
¿Por qué usar un array circular en lugar de una lista enlazada?
El array circular garantiza O(1) para todas las operaciones sin asignación dinámica de memoria, lo que lo hace más rápido y con mejor localidad de caché que una lista enlazada. La lista enlazada es preferible si la capacidad es desconocida o ilimitada.
¿Qué complejidad temporal tienen las cuatro operaciones del deque?
Las cuatro operaciones (push_front, push_back, pop_front, pop_back) son O(1) con el array circular. La operación imprimir es O(n) porque recorre todos los elementos.