Implementa un mètode públic de la classe
Stack<T> que elimini l’element i-èssim des del cim de
la pila. És a dir, considerem que el cim de la pila té l’índex 0.
La declaració és la següent:
/**
* @post: S'ha eliminat de la pila l'element `i`-èssim, amb `i` en el
* rang de 0 a N-1 (amb 0 el cim), sent N la mida de la pila.
* Si l'índex no està en el rang 0 a N-1, la pila no canvia.
*/
void eliminar(int i);
Per poder avaluar l’ús de punters, no feu servir altres mètodes, ni públics ni privats de la classe per resoldre el problema, accediu sempre als membres privats directament.
Observeu que a l’entrada la pila es llegeix començant per la base
fins al cim, que surt l’últim, i en canvi a la sortida és al revés (les
marques <top> i <bottom> ho
aclareixen).
Els fitxers públics (icona del gatet) contenen:
stack.hh |
la classe Stack<T> |
main.cc |
el programa principal (gestiona l’entrada i sortida) |
Makefile |
per compilar amb make al
terminal |
.vscode |
per compilar i depurar amb F5 |
Per entregar només cal enviar el fitxer stack.hh
modificat.
De l’entrada ja se n’encarrega el programa principal.
L’entrada està formada per diferents cassos seguits. Cada cas conté un
enter
seguit d’una pila (una seqüència d’enters acabada amb
#).
De la sortida també se n’encarrega el programa principal. La sortida mostra la pila resultant després d’eliminar l’element i-èssim des del top.
Input
0 1 2 3 # 3 1 2 3 4 5 # 5 1 2 3 4 5 # 1 1 2 3 4 5 # 6 1 2 3 #
Output
<top> 2, 1 <bottom> <top> 5, 4, 3, 1 <bottom> <top> 5, 4, 3, 2, 1 <bottom> <top> 5, 3, 2, 1 <bottom> <top> 3, 2, 1 <bottom>