Recursividad con pilas
Publicado por Darwin (1 intervención) el 24/04/2020 14:25:56
Hola buenas,
Tengo una duda sobre un problema de recursividad con pilas, el planteamiento es este:
-Crear una función exactamente así:
void concatenar_pilas(stack<int> &p, stack<int> &q, stack<int> &concatp);
/* Pre: p = P i q = Q i concatp esta vacia */
/* Post: concatp contiene arriba los elementos de P en
el mismo orden, i abajo los elementos de Q en el mismo
orden */
-Un ejemplo:
pila 1: 1|2|5|4]
pila 2: 3|2|7]
pila concatenación: 1|2|5|4|3|2|7]
-Este es mi código:
-Y este es mi output (siendo pila 1: 1|2|5|4] y pila 2: 3|2|7]):
pila concatenació: 4|5|2|1|7|2|3]
Tengo una duda sobre un problema de recursividad con pilas, el planteamiento es este:
-Crear una función exactamente así:
void concatenar_pilas(stack<int> &p, stack<int> &q, stack<int> &concatp);
/* Pre: p = P i q = Q i concatp esta vacia */
/* Post: concatp contiene arriba los elementos de P en
el mismo orden, i abajo los elementos de Q en el mismo
orden */
-Un ejemplo:
pila 1: 1|2|5|4]
pila 2: 3|2|7]
pila concatenación: 1|2|5|4|3|2|7]
-Este es mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void concatena_pilas(stack<int> &p, stack<int> &q, stack<int> &concatp)
/* Pre: p = P i q = Q i concatp esta vacia */
/* Post: concatp contiene arriba los elementos de P en
el mismo orden, i abajo los elementos de Q en el mismo
orden */
{
if (p.size()==1 and q.size()==1){
concatp.push(q.top());
concatp.push(p.top());
}
else{
if(not q.empty()){
concatp.push(q.top());
q.pop();
}
else{
concatp.push(p.top());
p.pop();
}
if (not (p.empty() and q.empty())) concatena_pilas(p, q, concatp);
}
}
-Y este es mi output (siendo pila 1: 1|2|5|4] y pila 2: 3|2|7]):
pila concatenació: 4|5|2|1|7|2|3]
Valora esta pregunta


0