西卡C语言汉诺塔演示程序(二)

2014-11-23 23:24:23 · 作者: · 浏览: 16
nuota *han)
{
int i =0;
//clrscr();
system("CLS");
ShowFace(han);
for(;i<3;i++)
{
TravereStack(han->sp[i],ShowElement,han->x[i],han->y);
}
gotoxy(8,14);
printf("Step is No. %d ",step++);
getch();
return 1;
}

int ChangeData(Hannuota *han,int a,int b)
{
ElementType data;
Pop(han->sp[a],&data);
Push(han->sp[b],&data);
ShowHannuota(han);
//getchar();
return 1;
}

void Mov(Hannuota *han,int num,int a,int b,int c)
{
if(num<1)
{
return;
}

Mov(han,num-1,a,c,b);
ChangeData(han,a,c);
Mov(han,num-1,b,a,c);
}

int GameStart(Hannuota *han)
{
int i = han->total;

for(;i>0;i--)
{
Push(han->sp[0],&i);
}

ShowHannuota(han);
Mov(han,han->total,0,1,2);
return 1;
}

int main()
{
Hannuota *han = InitHannuota(3);
if(!han)
{
return 0;
}

GameStart(han);
DestroyHannuota(han);
return 1;
}
具体效果如下:

面向对象的实现,请大牛赐教。