题目:X有n个盘子,从上到下有从小到大的顺序,有三个柱子X,Y, Z,把n个盘子从X移到Z,Y为辅助,并在移动过程中有一个约束条件就是大盘永远不能在小盘上面。
一)实现过程
盘子用整数模拟;
柱子X,Y,Z用栈模拟;
hannota函数递归实现;
move函数为移动盘子操作;
二)结果与代码
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;//盘子的结构
typedef struct//柱子(栈)的结构
{
char name;
ElemType* base;
ElemType* top;
}StackType;
int initstack(StackType* s,char name)
{
s->name=name;
s->base=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));
if(s->base==NULL)
exit(0);
s->top=s->base;
return 1;
}
int push(StackType* s,ElemType e)
{
if(s->top-s->bas