数据结构及数据库原理
实 验 指 导 书
孙 毅
浙江工业大学 机电工程学院CAD研究所
2OO1.7.
实验一:(数据结构) Hanoi塔问题求解
1. 知识辅导:
堆栈问题是数据结构中二种主要的线性结构之一。其基本操作是线性表操作的子集,已广泛应用于各种软件产品中。栈操作主要发生在线性表的表尾进行插入或删除操作。其在计算机中的存储结构可利用数组或链表方式来实现。压栈及出栈操作可通过栈顶元素的变化来实现。从空间的合理应用及操作的便利方式上考虑,利用链表结构有利于计算机代码的管理与实现。
2. 实验目的
通过对Hanoi塔问题的求解,复习并掌握数据结构中线性结构的存储结构实现方式、操作方法的实现,并培养软件编程实现过程中对程序模块的安全检测与控制能力。
3.实验内容:
设有A、B、C三根立柱(如图所示)和N个大小不等的中空圆盘从小到大依次编号(1,2,3,……,N)已在A柱上堆成塔形,
1
试将此盘全部移至轴,且按原样迭成塔形。在移动中有如下限制:
1 2 3 A B C ? 每次只能移动一个圆盘;
? 任何时候均不得大盘压在小盘中; ? 圆盘只允许套在A、B、C三根立柱上。
4.实验思考说明:
该问题可归结为三个子任务:
(1)将1~N-1号盘移至B轴。移动时C轴作辅助轴; (2)将N号盘由A轴移至C轴;
(3) 再将号盘从B轴移动至C轴,A轴作辅助轴。
其中:(2)只需移动一次完成;(1)和(3)与原问题的提法完全相同,只不过圆盘数量少1个,且A、B、C三个立轴的作用也有所不同。
可设计一个过程:
movetow(height,from,to,using);
2