#ifndef HANIO_H_
#dene HANIO_H
class Stack
{
private:
enum{ MAX=50 };
int m_node[MAX];
int m_top;
int m_size;
int m_index;
public:
Stack();
~Stack() { };
bool Isfull() { return m_top==MAX-1 ;}; //堆栈满则返回 TRUE
bool Isempty() { return m_top==-1;}; //堆栈空则返回 TRUE
int Top() { return m_top; };
int TopValue() { return m_node[m_top];};
int GetDataFromIndex(int i) { return m_node[i]; };
int GetIndex() { return m_index; } ;
void SetIndex(int index) { m_index = index; };
int Size() { return m_top+1; };
bool Push(int data);
bool Pop(int * pData);
int MoveToNext();
void OutPrint();
};
class Hanio
{
Stack m_stack[3];
int m_num; //盘数
int m_steps; //移动次数
int m_times; //完成所用时间
void print(char ch,int n);
public:
Hanio(int num=3);
~Hanio() {};
void GameStart();
bool MoveFromTo(int x,int y); //从 x 号盘移动到 y 号盘
void DrawPaletes(char ch='*'); //打印 3 个堆的盘子