欢迎光临散文网 会员登陆 & 注册

《数据结构(C语言版)》栈与递归之Hanoi塔

2022-03-31 17:20 作者:回到唐朝当少爷  | 我要投稿

清华大学计算机系列教材   累计发行超400万册

严蔚敏 吴伟民 编著

数据结构(C语言版) 

以下是本人对紫皮书第三章3.3节栈与递归的实现中Hanoi塔问题的代码,3.2.5表达式求值、3.2.4迷宫求解、3.2.1数制转换、3.2.2括号匹配的检验、3.2.3行编辑程序这些完整的代码已在栈的应用专栏给出

上运行结果:

代码如下

(貌似专栏把我缩进吃了,懒得加了,另外建议用visual studio编译) 

#include <stdio.h>

void move(char a, int n, char b);//把第n个圆盘从塔柱a移动到塔柱b

void hanoi(int n, char x, char y, char z);//中间的y为辅助塔,将塔座x上的n个圆盘搬到塔座z上

int count = 0;//计算搬运次数

int main()

{

char x = 'x';

char y = 'y';

char z = 'z';

hanoi(3, x, y, z);

printf("搬运完成,总共需要搬运%d次", count);

return 0;

}

//塔座x上有按直径由小到大且自上而下编号为1至n的n个圆盘

void hanoi(int n, char x, char y, char z)//中间的y为辅助塔,将塔座x上的n个圆盘搬到塔座z上

{

if (n == 1)

{

move(x, 1, z);//将编号为1的圆盘从x移到z

}

else

{

hanoi(n - 1, x, z, y);

move(x, n, z);

hanoi(n - 1, y, x, z);

}

}

void move(char x, int n, char z)//把第n个圆盘从塔柱x移动到塔柱z

{

printf("第%d次:把%d号圆盘从塔座%c移动到塔座%c\n",++count, n, x, z);

}


《数据结构(C语言版)》栈与递归之Hanoi塔的评论 (共 条)

分享到微博请遵守国家法律