- 16
- 0
- 约1.67千字
- 约 6页
- 2021-08-20 发布于江苏
- 举报
2021年栈结构实现汉诺塔实验报告
2021年栈结构实现汉诺塔实验报告
PAGE / NUMPAGES
2021年栈结构实现汉诺塔实验报告
数 据 结 构
实
验
报
告
学 院 软件学院
年 级 级
班 级 班
学 号
姓 名
年 3 月 24 日
目录
一、 试验内容……………………………………….1
二、 试验过程……………………………………….X
三、 试验结果……………………………………….X
一、 试验内容:
1、 试验题目: 栈结构实现汉诺塔
2、 试验要求: 有三个柱子A、 B、 C, A柱子上叠放有n个盘子, 每个盘子都比它下面盘自己小一点, 要求借助柱子B, 将柱子A上全部盘子移动到柱子C上。要求一次只能移动一个盘子, 且移动过程中大盘子不能放在小盘子上面, 只能小盘子放在大盘子上面。
3、 试验目标: 了解并掌握栈结构原理和基础操作, 并用利用栈结构实现汉诺塔。了解递归工作过程。
二、 试验过程:
1、 任务分配
2、 设计思想
(1)将A柱子上n-1个盘子借助C柱子移到B柱子上, 把A上剩下一个盘子移到C上, 将B上n-1个盘子借助A移到C上
(2)建立三个栈作为汉诺塔, 利用栈结构“优异后出”特点, 优异栈盘子要后出来
3、 需求分析
(1) 输入形式和输入值范围: 输入盘子个数n
(2) 输出形式: 盘子移动过程及最终移动总次数
(3) 程序所能达成功效: 将A上n个盘子借助B移到C上
(4) 测试数据:
4、 概要设计
1).抽象数据类型
2).算法
a.栈模块: 用来作为汉诺塔存入和去除圆盘, 优异栈圆盘后出来
b.汉诺塔模块: 建立汉诺塔模型(将A上n个盘子借助B移到C上)
其中move函数用于实现圆盘移动
c.主函数模块: 接收处理命令(初始化数据)
5、 具体设计
程序代码(含注释)
6、 调试分析
(1)调试中问题分析:
a.在定义汉诺塔函数数据类型时, 开始使用是void, 不过与后面main函数中定义i类型不相符, 且void函数无法返值, 最终改为int型
算法时空分析:
a.时间复杂度: 程序所花时间正比于所输出信息行数目, 而信息行数目等价于盘子移动次数, 盘子移动数目为move(n), 所以函数时间复杂度为O(move(n))
b.空间复杂度: 3座塔在任何时候总共拥有盘子个数都是n个, 依据栈结构特点, 只需要申请n个元素空间。
汉诺塔问题复杂性是以n为指数函数, 所以只能接收n值比较小(n20)汉诺塔问题。
7、 测试结果
列出你测试结果, 包含输入和输出。这里测试数据应该完整和严格, 最好多于需求分析中所列。
8、 说明(假如有)
三、 试验结果: (结果分析, 心得体会等)
1.结果分析: 栈结构实现汉诺塔, 充足表现栈结构“优异后出”特点, 利用这一基础特征, 结合递归算法适用, 以达成试验目。
2.心得体会: 这次栈结构实现汉诺塔代码编写给了我深刻体会, 它不仅让我了解了栈结构基础操作和相关知识点。在试验过程中出现了很多bug, 需要不停调试才能找出问题, 取得处理。即使这次试验已经达成了基础目, 不过让我发觉了自己在相关知识点上缺点以及粗心毛病, 在以后学习过程中, 要愈加细心, 多练习, 多思索。
注: 共三大项, 具体每一项内容可依据自己汇报内容分条叙述, 自行安排得立即可。
备注: (正文采取宋体小四, 间距20磅)
以上说明仅供参考。试验汇报从这5部分展开, 具体内容可自由发挥。如有雷同, 均按零分处理。
您可能关注的文档
最近下载
- 柴油发动机缸体混线加工生产线 D 系列OP50 工序夹具设计.docx VIP
- 欢迎使用三盈SK系列新卡机联接税控燃油加油机.PDF VIP
- 新规学法减分题库及答案.doc
- PMC-S723-A 三相数字式多功能测控电表用户说明书_V1.4_20231127 (1).pdf VIP
- 2026年苏州工业职业技术学院单招《数学》模拟试题及完整答案详解【全国通用】.docx VIP
- 教师培训《备课专业化——学教评教学设计的理念与操作》荐读读书分享读书感悟PPT教学课件.pptx
- 一级建造师建设工程项目管理教材重点总结.doc VIP
- 华源证券-汽车行业周报-矿山无人驾驶专题1-矿山无人驾驶商业模式-市场规模.pdf VIP
- CNAS-CC01.PDF VIP
- 北师大版三年级下册数学全册教学设计(配2026年春改版教材).docx
原创力文档

文档评论(0)