07/05/2016, 17:57
|
| | Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 9 años, 2 meses Puntos: 0 | |
Duda Con Torres De Hanoi Recursiva Buenas a todos.
Necesito ayuda con el codigo de las torres de hanoi recursivo.
creo que se debe llamar las funciones 3 veces. pero no logro hacerlo funcionar.
Este es El Codigo Que Me Dieron A completar.
Se Debe Completar En la funcion Hanoi
Agradesco de antemano su ayuda Xfa...!!!
Código:
#include <iostream>
#include <string>
#include<conio.h>
using namespace std;
struct nodo{
int nro;
struct nodo *sgte;
};
typedef nodo *pila;
void push( pila &p, int valor )
{
pila aux;
aux = new(struct nodo); // apuntamos al nuevo nodo creado
aux->nro = valor;
aux->sgte = p ;
p = aux ;
}
int pop( pila &p )
{
int num ;
pila aux;
aux = p ;
num = aux->nro; // asignamos el primer vamor de la pila
p = aux->sgte ;
delete(aux);
return num;
}
void mostrar_pila( pila p )
{
pila aux;
aux = p; // apunta al inicio de la lista
string t="";
while( aux !=NULL )
{
cout<< aux->nro <<", ";
aux = aux->sgte;
}
cout<<endl;
}
pila orig,dest,aux;
void mostrar_pilas(void)
{
cout<<"origen: ";
mostrar_pila(orig);
cout<<"destino: ";
mostrar_pila(dest);
cout<<"auxiliar: ";
mostrar_pila(aux);
cout<<endl;
}
void hanoi(int n,pila &o,pila &d,pila &a) {//n=cantidad de discos, o=origen, d=destino, a=auxiliar
if (n == 1) {//Caso base
push(d,pop(o));
mostrar_pilas();
}else{
//Completar recursividad
hanoi(n-1, , , );
hanoi( , , , );
hanoi(n-1, , , );
}
}
int main() {
//Completar para n discos, actualmente solo 3
do{
push(orig,3);
push(orig,2);
push(orig,1);
mostrar_pilas();
hanoi(3,orig,dest,aux);
}while(true);
getch();
}
|