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(); }