Disponemos de una clase Stack con elementos de tipo
T (fichero stack.hh). Implementad un método de
esta clase que inserte un nuevo elemento con cierto valor (parámetro
explícito) en la pila (parámetro implícito). La pila está ordenada, y el
elemento que se introduce mantiene la pila ordenada.
/**
* @pre: La pila (parámetro implícito) está ordenada
* de menor (bottom) a mayor (top).
*
* @post: Se ha introducido en la pila p.i. de forma ordenada
* un nodo con contenido 'value'.
*/
void push_sort(T value);
(La declaración del método push_sort está al final del
fichero stack.hh.)
Los ficheros públicos (icono del gatito) incluyen un
.tar con main.cc, stack.hh y un
Makefile. También se incluye una copia de los juegos de
prueba públicos por comodidad. En la carpeta donde se descompriman se
puede: compilar con "make"; y testear con
"make test".
El main.cc ya se encarga de leer la entrada, procesar
los comandos y producir la salida. Para entregar, solo es necesario
subir al Jutge vuestro archivo stack.hh modificado.
Al implementar push_sort no se pueden llamar otras
operaciones de la clase, y todo se debe implementar con punteros.
El programa principal tiene un bucle donde se van leyendo comandos, uno por línea, y para cada una se realiza una operación de la pila. El nombre de los comandos se corresponde con el de los métodos de la pila. Consultad los juegos de prueba, ya que son auto-explicativos.
La salida es el estado de la pila cada vez que la entrada contiene un
comando size o print. Consultad los juegos de
prueba, ya que son auto-explicativos.
Input
push 1 push 2 size push 3 print push_sort 0 print
Output
size is 2 <top> 3, 2, 1 <bottom> <top> 3, 2, 1, 0 <bottom>
Input
size print push_sort -7 push_sort 0 print push_sort -3 print size
Output
size is 0 <top> <bottom> <top> 0, -7 <bottom> <top> 0, -3, -7 <bottom> size is 3