数据结构课程设计---汉诺塔问题.docVIP

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计---汉诺塔问题

目录 目录 1 1.系统需求分析 2 1.1 问题描述 2 2.概要设计 4 2.1设计思路 4 2.2 系统总体设计 5 2.3程序流程图 6 2.3.1塔盘数量设置 6 2.3.2移动速度调节 6 2.3.3操作对象选择 7 2.3.4汉诺塔求解流程图 8 3.详细设计 9 3.1 模块设计 9 3.1.1 塔和塔显示的定义 9 3.1.2 塔盘移动的定义 11 3.1.3 塔盘移动规律的定义 12 3.1.4 主函数main( ) 12 4. 系统调试 14 5. 运行结果 14 6. 心得体会 19 7. 附录 20 7.1 参考书目 20 7.2 源程序 20 8评分表 25 1.系统需求分析 1.1 问题描述 (一)、课程设计题目: (二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握语言的基本知识和技能; (2)基本掌握的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的问题。 2、基本要求: (1)要求利用来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三)、设计方法和基本原理: 1、问题描述(功能要求): 要求用Turbo C实现的的图形程序2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)(2)完成类中各个成员函数的定义; (3)完成系统的应用模块 (4)功能调试; (5)完成系统总结报告以及系统使用说明书。2.1设计思路 对于一个类似的这样的问题,任何一个人都不可能直接写出移动盘子的每一个具体步骤。可以利用这样的统筹管理的办法求解:我们假设把该任务交给一个僧人,为了方便叙述,将他编号为64。僧人自然会这样想:假如有另外一个僧人能有办法将63个盘子从一个座移到另一个座,那么问题就解决了,此时僧人64只需这样做: 命令僧人63将63个盘子从A座移到C座 自己将最底下的最大的一个盘子从A座移到C座 再命令僧人63将63个盘子从B座移到C座 为了解决将63个盘子从A座移到B座的问题,僧人63又想:如果能再有一个僧人62能将62个盘子移动到另一座,我就能将63个盘子从A座移动到B座。他是这样做的: 命令僧人62将62个盘子从A移动到C 自己将一个盘子从A座移动到B座 再命令僧人62将62个盘子移到B座 再进行一次递归。如此“层层下放”,直到后来找到第2个僧人,让他完成将2个盘子从一个座移到另一个座,进行到此,问题就解决了。最后找到第1个僧人,让他完成将一个盘子从一个座移动到另一个座,至此,全部工作已经完成,都是可以执行的。 按照如此的思路设计递归算法,很容易得出盘子的移动方案。 另外是图形演示盘子的移动过程。为了能够更加形象的表示盘子的移动过程。在设计图形演示的时候,我们采用了图形动态演示。首先我们将字幕、柱子、以及提示信息等等屏幕内容设置成固定不变,我们这里称之为舞台。我们将盘子看作对象,一个盘子一个对象。在设计演示过程的时候,只需要将盘子对象放置于二维界面中的不同信置,通过刷新屏幕,实现动画显示。 2.2 系统总体设计 先对程序,一般可以使用、显示等功能,总的设计思路如下图所示: 图1.汉诺塔功能结构体图 2.3程序流程图 2.3.1塔盘数量设置 图.1塔盘数量设置部分 2.3.2移动速度调节 图.2移动速度调节部分 2.3.3操作对象选择 图.3操作对象选择部分 2.3.4汉诺塔求解流程图 图.4汉诺塔求解流程图 3.详细设计 3.1 模块设计 3.1.1 塔和塔显示的定义 struct T { int h; //塔的高度 int x; //塔的第一个盘的x坐标 ,y坐标等于(7+n-塔的高度h) int l; //塔的第一个盘的长度 }ta[3]={{10,15,2},{0,0,0},{0,0,0}}; char hnt[18][79]={ { }, { }, {

您可能关注的文档

文档评论(0)

bodkd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档