Нужен совет по внедрению стеков в Ханое
У меня есть некоторые сомнения относительно того, как реализовать стеки в Ханойской игре на C++, я понимаю, как работают Ханой и стеки, но не совсем понимаю, как их связать.
main.cpp
#include <iostream> #include "HanoiLib.h" #include "LibPila.h" using namespace std; using namespace PILA; int main() { Pila P1; int Dsk; Dsk = P1.getData(); // Get number of disks for(int i = 0; i < Dsk; i++) // Insert disks on source peg { P1.PUSH(P1.POP()); } P1.Print(); // Print all the disks Tower(Dsk, 1, 3, 2); // Where 1, 2 and 3 are the pegs P1.PUSH(P1.POP()); // I'm trying to push from Dst to aux Tower(Dsk, 3, 1, 2); return 0; }
HanoiLib.ч
#ifndef _LibHanoi_H_ #define _LibHanoi_H_ using namespace std; void Tower(int Dsk, int Src, int Dst, int aux) { if(Dsk > 0) { Tower(Dsk - 1, Src, Dst, aux); cout << "Move disk " << Dsk << "from " << Src << "to " << aux << endl; Tower(Dsk - 1, Dst, aux, Src); } } # endif // __LibHanoi_H_
LibPila.ч
#ifndef _LibPila_H_ #define _LibPila_H_ #define MAX_STACK 10 // stack max limit using namespace std; namespace PILA { class Pila { private: int stack[MAX_STACK]; int top = -1; public: void PUSH(int val) { if(top == MAX_STACK -1 ) cout << "Stack overflow!!" << endl; stack[++top] = val; } int POP() { if(top == -1) cout << "There's nothing here!!" << endl; top--; return top; } int Top() { return stack[top]; } void Print() { int i; cout << "Stack: "; for(i = 0; i <= top; i++) cout << stack[i]; cout << "" << endl; } int getData() { int x; cout << "Insert NO of disks: "<< endl; cin >> x; return x; } }; } # endif // __LibPila_H_
Что я уже пробовал:
Только дизайн и поток того, как это работает в теории