#include<stdio.h>
void hanoi(int n,char a,char b,char c)
{
if(n==1)printf("盘号:%d,%c-->%c\n",n,a,c);
if(n>=2)
{
hanoi(n-1,a,c,b);
printf("盘号:%d,%c-->%c\n",n,a,c);
hanoi(n-1,b,a,c);
}
}
void main()
{
int n;char a='A',b='B',c='C';
printf("请输入圆盘的总个数n:");
scanf("%d",&n);
hanoi(n,a,b,c);
}
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int n;
char a,b,c;
int flag;
}ElemTp;
typedef struct
{
ElemTp *elem;
int max_size;
int top;
}SqStack;
void main()
{
void createStack(SqStack &s,int n);
void push(SqStack &s,int n,char a,char b,char c,int flag);
int n;
ElemTp x,y;
scanf("%d",&n);
SqStack s;
createStack(s,n);
push(s,n,'A','B','C',0);
while(s.top>=0)
{
x=s.elem[s.top];
if(x.n==0||x.flag==2)
{
s.top--;
s.elem[s.top].flag++;
}
else if(x.flag==0)
push(s,x.n-1,x.a,x.c,x.b,0);
else
{
printf("盘号:%d,%c-->%c\n",x.n,x.a,x.c);
push(s,x.n-1,x.b,x.a,x.c,0);
}
}
}
void createStack(SqStack &s,int n)
{
s.max_size=n+1;s.top=-1;
if(!(s.elem=(ElemTp*)malloc(s.max_size)))exit(-1);
}
void push(SqStack &s,int n,char a,char b,char c,int flag)
{
ElemTp x={n,a,b,c,flag};
if(s.top>=s.max_size-1)exit(-1);
s.elem[++s.top]=x;
}