Escriviu el codi de l’acció recursiva
concatena_piles que, donades dues piles d’enters, deixi en
una altra pila el resultat de concatenar-les. Definim la concatenació de
dues piles p i q com posar la primera sobre la segona
mantenint l’ordre dels elements, és a dir, sense invertir-ne cap de les
dues.
void concatena_piles(stack<int> &p, stack<int> &q, stack<int> &concatp);
/* Pre: p = P i q = Q i concatp es buida */
/* Post: concatp conte a dalt els elements de P en
el mateix ordre, i a sota els elements de Q en el mateix
ordre */Per veure una figura amb les piles corresponents al primer exemple d’entrada-sortida dels jocs de prova públics, consulteu la versió pdf d’aquest enunciat.
L’entrada conté varis blocs separats per línies amb 10 guions
(----------). Cada bloc consisteix en dues piles d’enters.
Per cada parell de piles s’introduiran, en aquest ordre, primer el
nombre d’elements de la primera pila i els enters de la primera pila,
seguit del nombre d’elements de la segona pila i els enters de la segona
pila.
Per llegir les piles, s’ha utilitzat l’operador >>
que es troba definit en el mòdul stackIOint.
Com a sortida es mostrarà, per cada parell de piles, les dues piles d’entrada i la pila resultant de la seva concatenació.
Per escriure les piles, s’ha utilitzat l’operador
<< que es troba definit en el mòdul
stackIOint.
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar pila_concatena.cpp
Observeu que per compilar us donem el Makefile, el mòdul
stackIOint, la capçalera del mòdul funcional
pila_concatena.hpp i el programa principal
program.cpp.
Jutge.org també us donarà un semàfor verd si envieu una solució iterativa, però no serà correcte doncs l’enunciat del problema demana que la solució enviada sigui recursiva.
Input
4 4 5 2 1 3 7 2 3 ---------- 0 3 7 2 3 ---------- 4 4 5 2 1 0
Output
pila 1: 1|2|5|4] pila 2: 3|2|7] pila concatenació: 1|2|5|4|3|2|7] pila 1: ] pila 2: 3|2|7] pila concatenació: 3|2|7] pila 1: 1|2|5|4] pila 2: ] pila concatenació: 1|2|5|4]