Disposem d’una classe Stack
amb elements de tipus T
(fitxer stack.hh
). Implementeu un mètode d’aquesta classe que insereixi un nou element amb cert valor (paràmetre explícit) a la pila (paràmetre implícit). La pila està ordenada, i l’element que s’introdueix manté 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ó del mètode push_sort
està al final del fitxer stack.hh
.)
Els fitxers públics (icona del gatet) inclouen un .tar
amb main.cc
, stack.hh
i un Makefile
. També s’inclou una còpia dels jocs de prova públics per comoditat. A la carpeta on es descomprimeixin es pot: compilar amb "make
"; i testar amb "make test
".
El main.cc
ja s’encarrega de llegir l’entrada, processar les comandes i produir la sortida. Per entregar, només cal pujar al Jutge el vostre fitxer stack.hh
modificat.
Observació
En implementar push_sort
no es poden cridar altres operacions de la classe, i tot s’ha d’implementar amb punters.
Entrada
El programa principal té un bucle on es van llegint comandes, una per línia, i per a cadascuna es realitza una operació de la pila. El nom de les comandes es correspon amb el dels mètodes de la pila. Consulteu els jocs de prova, ja que són auto-explicatius. Si una línia està buida o té un signe #
al principi, s’ignora i es passa a la següent.
Sortida
La sortida és l’estat de la pila cada vegada que l’entrada conté una comanda size
o print
. Consulteu els jocs de prova, ja que són auto-explicatius.
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