Implementeu un nou mètode de la classe Stack per a intercanviar el segon i tercer element des del top (nota: l’element del top seria el primer des del top).
D’entre els fitxers que s’adjunten en aquest exercici, trobareu
stack.old.hpp, a on hi ha una implementació de
la classe genèrica Stack. En primer lloc,
haureu de fer:
cp stack.old.hpp stack.hpp
A continuació, haureu de buscar dins
stack.hpp la part:
// Pre:
// Post: Els segon i tercer valor des del cim de la pila s'han intercanviat.
// En cas que la pila tingui menys de tres elements, res ha canviat.
// Descomenteu les següents dues linies i implementeu la funció:
// void swap2and3() {
// }
Haureu de descomentar les dues línies que s’indiquen i implementar aquest mètode. No toqueu la resta de la implementació de la classe, excepte si, per algun motiu, considereu que necessiteu afegir algun mètode auxiliar a la part privada.
Preferiblement, haurieu d’aconseguir implementar el mètode a base
d’intercanviar punters. De fet, un swap dels
valors, o una implementació a base d’usar push
i pop us permetrà passar els jocs de proves
públics (i així obtenir una part de la nota), però no els privats.
D’entre els fitxers que s’adjunten a l’exercici també hi ha
program.cpp (programa principal) i
Makefile per a compilar. Per a pujar la vostra
solució, heu de crear el fitxer solution.tar
així:
tar cf solution.tar stack.hpp
La entrada del programa és una seqüència d’instruccions del següent tipus que s’aniran aplicant sobre una pila que se suposa inicialment buida:
push x (x és un string)
pop
top
swap2and3
Se suposa que la seqüència d’entrada serà correcta (sense pop ni top sobre pila buida).
El programa principal que us oferim ja s’encarrega de llegir aquestes entrades i fer les crides als corresponents mètodes de la classe pila. Només cal que implementeu el mètode abans esmentat.
Per a cada instrucció top, s’escriurà el
top actual de la pila. El programa que us oferim ja fa això. Només cal
que implementeu el mètode abans esmentat.
Avaluació sobre 10 punts: (Afegiu comentaris si el vostre codi no és prou clar)
Solució lenta: 6 punts.
solució ràpida: 10 punts.
Input
swap2and3 push a top swap2and3 push b swap2and3 push c push d swap2and3 top pop top swap2and3 top push e swap2and3 top pop top pop top swap2and3 top push f top swap2and3 top pop pop top pop push g swap2and3 top
Output
a d b b e a b b f f b g
Input
push wp push h push q push a top swap2and3 top push k pop pop swap2and3 push y pop pop top pop push x swap2and3 push r push q push l push g pop pop top push k top pop push dv swap2and3 top
Output
a a wp q k dv