• 大小: 2KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 栈汉诺塔  

资源简介

任意输入N个盘,在三个柱子上实现汉诺塔问题的非递归求解,用栈进行

资源截图

代码片段和文件信息

#include 
#include
#include
#include
#define H 3
typedef struct
{
int a[100];
int top;
char name;
}ST;
void init(ST *tint n);
void move(ST *tint n);
void showdata(ST *t);
void push(ST *tint index);
int pop(ST *t);
int gettop(ST *t);
long int expo(int xint y);
main()
{

ST t[3];
int n;
printf(“请输入盘子数:\n“);
scanf(“%d“&n);
init(tn);
printf(“原始的数据为:\n“);
showdata(t);
move(tn);
printf(“移动后数据为:\n“);
showdata(t);
}
void init(ST *tint n)
{
int i;
t[0].top=0;
t[0].name=‘A‘;
for(i=n;i>=1;i--)
{
push(&t[0]i);
}
   if(H%2==0)
   {
   t[1].name=‘B‘;
   t[1].top=0;
   t[2].name=‘C‘;
   t[2].top=0;
   }
   else
   {
   t[1].name=‘C‘;
   t[1].top=0;
   t[2].name=‘B‘;
   t[2].top=0;
   }

}
void push(ST *tint index)
{
if(t->top>=0)
{
t->top++;

t->a[t->top]=index;
}
else
printf(“wrong!\n“);
}
int pop(ST *t)
{
int x;
if(t->top!=0)
{
x=t->a[t->top];
t->top--;
return x;
}
else exit(0);

}
void showdata(ST *t)
{
int ij;
for(j=0;j {
if(t[j].top!=0)
{
     printf(“zhu

评论

共有 条评论

相关资源