es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Torre de Hanoi en C++: El programa a veces termina sin completar la torre.

Intenté implementar la Torre de Hanoi utilizando una pila, pero parece haber algún problema al ejecutar el programa. A veces se ejecuta bien, pero otras veces el programa termina.
Creé una clase separada para funcionar como pila.

class stack{
    int* arr;
    int stackSize;
public:
    stack(int size = 0);
    ~stack();
    void push(int a);
    int pop();
};
stack::stack(int size){
    this->arr = new int(size);
    this->stackSize = 0;
}
stack::~stack(){
    delete []this->arr;
}
void stack::push(int a){
    this->stackSize++;
    int* temp = new int(this->stackSize);
    for(int i = 0; i < this->stackSize; i++){
        temp[i] = this->arr[i];
    }
    temp[this->stackSize-1] = a;
    delete []this->arr;
    this->arr = temp;
}
int stack::pop(){
    if(this->stackSize <= 0){
        cout << "stack underflow" << endl;
    }else{
        this->stackSize--;
        int popped = this->arr[this->stackSize];
        int* temp = new int(this->stackSize);
        for(int i = 0; i < this->stackSize; i++){
            temp[i] = this->arr[i];
        }
        delete []this->arr;
        this->arr = temp;
        return popped;
    }
}
void toh(int n, stack &s, stack &des, stack &aux){
    if (n <= 0)
        return;
    toh(n-1, s, aux, des);
    des.push(s.pop());
    display();
    toh(n-1, aux, des, s);
}

“`cpp


Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es difícil determinar el problema sin ver el programa completo y la implementación de la función de las Torres de Hanoi, pero aquí hay algunos consejos generales sobre el uso de pilas:

    1. Asegúrate de inicializar la pila de manera adecuada. En el código que proporcionaste, inicializaste la pila con un tamaño de 0, lo cual puede causar problemas al intentar agregar elementos a la pila.

    2. Verifica si hay desbordamiento o subdesbordamiento de la pila. Cuando saques un elemento de la pila, asegúrate de tener al menos un elemento en la pila. De manera similar, cuando agregues un elemento a la pila, asegúrate de no desbordarla.

    3. Revisa nuevamente tu implementación de la función de las Torres de Hanoi. Asegúrate de pasar las pilas correctas como argumentos y de que la lógica dentro de la función sea correcta.

    4. También es importante destacar que el problema de las Torres de Hanoi tiene una solución recursiva óptima y no necesariamente requiere el uso de una pila. Sin embargo, utilizar una pila para implementar la solución puede ser un buen ejercicio para practicar el trabajo con estructuras de datos.

Comments are closed.