/************************************************************************/
/* 数据结构:栈应用:汉诺塔(Hanoi)问题 */
/* 挑灯看剑-shuchangs@126.com 2010-10 */
/* 云歌国际(Cloud Singers International) www.cocoral.com */
/************************************************************************/
//参见版面《数据结构:栈应用_求解汉诺塔(Hanoi)1》
//循环函数:将from中的前n-1个元素通过tmp搬运到to中
void recursion(int n, StackPointer from, StackPointer tmp, StackPointer to,
int* cnt)
{
static void move(StackPointer a, StackPointer b, int* cnt);
if (n == 1)
{
move(from, to, cnt);
}
else
{
recursion(n - 1, from, to, tmp, cnt); //将from中的前n-1个盘子搬运到tmp中,to作辅助塔
move(from, to, cnt);
recursion(n - 1, tmp, from, to, cnt); //将tmp中的前n-1个盘子搬运到to中,from作辅助塔
}
}
static void move(StackPointer a, StackPointer b, int* cnt)
{
Node rtnN =
{
0, NULL, NULL
};
NodePointer N = &rtnN;
StackOut(a, N);
StackIn(b, N->data);
*cnt += 1; //统计搬运次数
}
运行测试结果如下:
--------------------------------
汉诺塔:搬运前 A塔 盘子情况:
栈长度:4
打印结点信息(栈顶到栈底):
Node[4] = 1
Node[3] = 2
Node[2] = 3
Node[1] = 4
B塔 盘子情况:
栈长度:0
打印失败!栈为空!
C塔 盘子情况:
栈长度:0
打印失败!栈为空!
--------------------------------
--------------------------------
汉诺塔:搬运后 A塔 盘子情况:
栈长度:0
打印失败!栈为空!
B塔 盘子情况:
栈长度:0
打印失败!栈为空!
C塔 盘子情况:
栈长度:4
打印结点信息(栈顶到栈底):
Node[4] = 1
Node[3] = 2
Node[2] = 3
Node[1] = 4
--------------------------------
搬运次数合计:15
Press any key to continue
分享到:
相关推荐
汉诺塔 可以实现汉诺塔的解决 步骤的计算
用Csharp写的一个汉诺塔程序源代码,相信对初学者很有帮助
这是图形界面的汉诺塔程序,是在VC6的MFC开发环境中编写的
用C++实现汉诺塔的递归算法,定义了类和方法。
利用栈求解汉诺塔问题 问题描述 汉诺塔问题: 现有三个塔座,在塔1上叠有64个碟子,所有碟子按从大到小的次序从塔底堆放至塔顶。在塔1旁边还有另外两个塔座(塔2和塔3)。 要求每次移动一个碟子,将塔1上的64个...
任意输入N个盘,在三个柱子上实现汉诺塔问题的非递归求解,用栈进行
实验报告书 课程名: 数据结构 题 目: 汉诺塔 班 级: 学 号: 姓 名: 一、目的与要求 1)掌握栈与队列的数据类型描述及特点; 2)熟练掌握栈的顺序和链式存储存表示与基本算法的实现; 3)掌握队列的链式存储表示...
用递归的方法解决汉诺塔问题的思想。
数据结构用栈实现汉诺塔,用递归给你讲吧,先想这个棵树Tn,先把最下面的n要搬走,就得把上面的n-1个先搬走,这个n-1个也形成一个树T(n-1),然后又把这n-1个搬到n上面又形成一个T(n-1)的树,这个你就可以画出来...
用汇编解决汉诺塔问题,可以求15块板以下的方案。
汉诺塔代码A*算法,根据人工智能提供的算法思路,编写的程序
汉诺塔的非递归实现,希望可以帮助大家学习一下哦
C#图形界面汉诺塔Hanoi
一个简单的汉诺塔游戏,利用java程序实现的
1:学习栈的原理; 2:熟悉链表的构建与使用,利用链表实现栈; 3:利用栈求解汉诺塔问题; (里面都有文档的详细讲解)
汉诺塔 首先实现柱子柱子间的的移动 然后实现汉诺塔
汉诺塔的VC++源码,喜欢的下载吧,这个问题还真是麻烦~~~~~这个网页太不好用
汉诺塔非递归程序,包含详细的解析、代码、结果及心得
汉诺(Hanoi)塔问题
这是使用python语言编程的小游戏,汉诺塔hanoi,欢迎大家下载