Hanoi塔问题递归程序(C语言)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return_line=0;
}
if (return_line==6)
{
strcpy(action,"操作:a-->b");
action[5]=top.x;
action[9]=top.z;
strcpy(line_number,"6,7");
PrintStack(S,action,line_number);
while (S.len>0)
{
top=S.data[S.len-1];
if (top.n==1)
{
strcpy(action,"操作:a-->b");
action[5]=top.x;
action[9]=top.z;
strcpy(line_number,"1,2,3,9");
PrintStack(S,action,line_number);
S.data[S.len].z=z;
S.len++;
}
void PrintStack(Stack S, char *str, char *line_number)
{
printf("\n递归层次:%d %s\n",S.len,str);
printf("执行行号:%s\n",line_number);
for (int i=S.len-1; i>=0; i--)
push(S,top.n-1,8,top.y,top.x,top.z);
return_line=0;
}
if (return_line==8)
{
strcpy(action,"无操作");
strcpy(line_number,"8,9");
PrintStack(S,action,line_number);
{
printf("│ %d,%d,%c,%c,%c │\n",S.data[i].re_line,S.data[i].n,S.data[i].x,S.data[i].y,S.data[i].z);
}
}
int main()
{
int n;
int return_line=0;
char action[25];
return_line=top.re_line;
S.len--;
}
else
{
if (return_line==0)
{
strcpy(action,"无操作");
strcpy(line_number,"1,2,4,5");
PrintStack(S,action,line_number);
push(S,top.n-1,6,top.x,top.z,top.y);
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
int n;
int re_line;
char x;
char y;
char z;
} Status;
typedef struct {
int len;
Status *data;
char line_number[25];
Stack S;
Status top;
printf("***Hanoi***\n盘子总数n=");
scanf("%d",&n);
S.data=(Status*)malloc(n*sizeof(Status));
S.len=0;
push(S,n,0,'a','b','c');
} Stack;
void push(Stack &S, int n, int re_line, char x, char y, char z)
{
S.data[S.len].n=n;
S.data[S.len].re_line=re_line;
S.data[S.len].x=x;
S.data[S.len].y=y;
return_line=top.re_line;
S.len--;
}
}
}
printf("\n操作结束\n\n\n");
system("pause");
}Βιβλιοθήκη Baidu
相关文档
最新文档