实现汉诺塔(Hanoi)问题(堆栈、递归),自己写了一个汉诺塔问题的小程序,定义了一个堆栈类,然后用递归实现。主要想练下手,深入理解链栈、递归这些问题。直接上代码,写的不好的地方请指导。
#includeusing namespace std; typedef char ElemType; //定义链表结构 typedef struct LinkNode{ LinkNode* next; ElemType data; }LinkNode,*Linklist; //定义链栈类 class Stack{ public: Linklist top; int stack_size; Stack():stack_size(0),top(NULL){}; public: void PushStack(ElemType ele); ElemType PopStack(); void PrintStack(); }; //推入元素 void Stack::PushStack(ElemType ele) { Linklist ss=(Linklist)malloc(sizeof(LinkNode)); ss->data=ele; ss->next=top; top=ss; stack_size++; } //推出元素 ElemType Stack::PopStack() { ElemType val; Linklist p; if (top==NULL) { cout<<"STACK IS EMPTY!"< data; top=top->next; free(p); stack_size--; return val; } //打印链栈里所有的元素(遍历实现) void Stack::PrintStack() { if (stack_size!=0) { Linklist p=top; while(p) { cout< data<<" "; p=p->next; } cout<<>