文档详情

数据结构课程设计报告-- 汉诺威塔.doc

发布:2017-12-06约3.26千字共11页下载文档
文本预览下载声明
数据结构实验课程设计报告 题 目: 汉诺威塔 学生姓名: 学 号: 专业班级: 同组姓名: 指导教师: 设计时间: 大二上学期十七周 指导老师意见: 评定成绩: 签名: 日期: 目录 一. 设计目的与要求………………………………………………… 02 1.1设计目的……………………………………………… 02 1.2设计要求……………………………………………… 02 二. 设计分析………………………………………………………… 02 2.1汉诺威塔问题………………………………………… 02 2.2算法分析……………………………………………… 03 2.3流程图………………………………………………… 06 2.4模块及其功能介绍…………………………………… 07 三. 设计实现………………………………………………………… 08 四. 心得体会………………………………………………………… 09 五. 参考文献………………………………………………………… 10 1.设计目的与要求 1.1设计目的 随着计算机技术以及外围设备的发展,计算机在辅助设计制造,计算机教育,计算机信息化应用中,图形的作用和魅力愈加显现。 如何运用计算机技术、运用算法编程来优化解决低阶汉诺威塔问题对我们学生来说具有可实现和可操作性。本次课程设计的目的就是利用所学习到得算法知识和编程语言知识来解决、实现低阶汉诺威塔问题。 1.2设计要求 功能:编程序显示n(n=9)层汉诺威塔的调整过程。 分步实施: 1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2.完成最低要求:实现5层汉诺威塔的调整过程; 3.进一步要求:直至实现n=9时的情况。有兴趣的同学可以自己扩充系统功能。 要求:1)界面友好,函数功能要划分好 2)总体设计应画一流程图 3)程序要加必要的注释 4)要提供程序测试方案 5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。 2.设计分析 2.1汉诺威塔问题 n阶汉诺威塔问题:有三个柱子A, B, CA柱子上叠放有n个盘子,每个盘子都比它下面的盘子要小一点,可以从上到下用1, 2, ..., n编号。要求借助柱子C,把柱子A上的所有的盘子移动到柱子B上。移动条件为:1、一次只能移一个盘子; 2、移动过程中大盘子不能放在小盘子上,只能小盘子放在大盘子上设A上有n个盘子。 n=1时,则将圆盘从A直接移动到C。 当n2时,移动的过程可分解为三个步骤: 把A上的n-个圆盘移到B上; 把A上的一个圆盘移到C上; 把B上的n-个圆盘移到C上;其中第一步和第三步是同的。 为了更清楚地描述算法将N个盘子从A杆上借助C杆移动到B杆上。这样移动N个盘子的工作就可以按照以下过程进行: 第一次调用递归 ②将一个盘子从A移动到B上; ③第二次调用递归 重复以上过程,直到将全部的盘子移动到位时为止。 3,a,b,c a b c 有主函数进入第一层递归后,运行至 语句(行)5,因递归调用而进入下一层 由第一层的语句行5进入第二层递归,执行至行5 。 2 2,a,c,b 3,a,b,c 3 1,a,b,c 2,a,c,b 3,a,b,c a b c 由第二层行5进入第三层递归,执行行3,将1号盘由a移至c后从行9退出第三层递归,返回二层行6 。 2 2,a,c,b 3,a,b,c a b c 将2号盘由a移至b后,从行7进入下一层递归。 3 1,c,a,b 2,a,c,b 3,a,b,c a b c 将1号盘由c移至b后,从行9退出第三层。返回到第二层的行8。 2 2,a,c,b 3,a,b,c 从行9退出第二层。返回第一层行6 。 1 3,a,b,c a b c 将3号盘由a移至c后,从行7进入下一层递归。 2 2,b,a,c 3,a,b,c 从第二层行5进入第三层递归。 3 1,b,c,a 2,b,a,c 3,a,b,c a b c 将1号盘由b移至a后,从行9退出第三层递归
显示全部
相似文档