Deque

En este ejercicio completaremos la implementación de una estructura de datos llamada Deque. La librería estándar de C++ contiene una clase deque pero la implementación de este ejercicio es una simplificación.

Un Deque (double-ended queue) funciona como una pila y una cola a la vez. Podemos introducir elementos al inicio (push_front) y al final (push_back), y eliminar elementos del inicio (pop_front) y del final (pop_back). En un Deque, el método push_back se comporta exactamente como push en una cola clásica; y pop_front se comporta como el pop en una cola clásica.

Con el fin de poder aprovechar la implementación de Queue y simplemente añadir operaciones nuevas, hemos usado la clase Queue de base cambiando la implementación de Item, que ahora también tiene un apuntador al elemento anterior. Es decir, la estructura de nodos es equivalente a la de Queue, pero está doblemente enlazada.

Familiarízate con la clase Deque<T>, y luego implementa un método público que elimine el último elemento del Deque (pop_back). La declaración es la siguiente:

/**
 * @brief  El Deque original (p.i.) pierde el último elemento si no está vacío. 
 *         si está vacío se aborta la ejecución y se envía un mensaje de error.
 *
 * @pre   El Deque original (p.i.) no está vacío.
 * @post  El Deque pierde el último elemento.
 */
void pop_back();

Observación

Para poder evaluar el uso de punteros, no uséis otros métodos, ni públicos ni privados de la clase para resolver el problema, acceded siempre a los miembros privados directamente.

Si tenéis dudas sobre cómo producir el mensaje de error, mirad cómo se hace en las operaciones que ya damos implementadas.

Los ficheros públicos (icono del gatito) contienen:

deque.hh la clase Deque<T>
main.cc el programa principal (gestiona la entrada y salida)
Makefile para compilar con make en el terminal
.vscode para compilar y depurar con F5

Para entregar solo hay que enviar el fichero deque.hh modificado.

Entrada

De la entrada ya se encarga el programa principal. La entrada está formada por diferentes operaciones sobre el Deque: push_back, push_front, pop_back, pop_front, size, front, back, write_deque, acabadas con end.

Salida

De la salida también se encarga el programa principal. La salida muestra los resultados de las operaciones de consulta y el estado del Deque cuando se solicita.

Información del problema

Autoría: Mª Lluïsa Bonet i Pau Fernández

Generación: 2026-03-25T18:26:15.438Z

© Jutge.org, 2006–2026.
https://jutge.org