- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构c语言(课程设计)报告
扬州职业大学
PAGE
PAGE 5
数据结构
课程设计报告
设计题目:迷宫求解
专 业 机电一体化
班 级 08专接本
学 生
学 号 1
指导教师 高在村
完成时间 2011. 5
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc 一.实验内容 PAGEREF _Toc \h 3
HYPERLINK \l _Toc 二.需求分析 PAGEREF _Toc \h 3
HYPERLINK \l _Toc 三.总体设计 PAGEREF _Toc \h 3
HYPERLINK \l _Toc 四.详细设计 PAGEREF _Toc \h 5
HYPERLINK \l _Toc 五.代码 PAGEREF _Toc \h 9
HYPERLINK \l _Toc 六.测试 PAGEREF _Toc \h 14
HYPERLINK \l _Toc 七. 总结 PAGEREF _Toc \h 16
HYPERLINK \l _Toc 参考文献 PAGEREF _Toc \h 17
一.实验内容
任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;
要求:界面友好,函数功能要划分好;总体设计应画一流程图;程序要加必要的注释;要提供程序设计方案;程序一定要经得起测试;宁可功能少一点,也要能运行起来,不能运行的程序是没有价值的。
二.需求分析
1.可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;
要求:使用非递归算法。
2.用户可以根据自己的需求进行输入所需的迷宫,其中1表示迷宫的墙壁,0表示迷宫的通路,从而建立自己的迷宫;
3.用户还可以自己设计迷宫的入口坐标,当然也可以设计出口了;
4.程序执行的命令包括:
(1)构造栈Stack, T 描述迷宫中当前位置的结构类型, LinkNode链表结点三个类,其中Stack是Linknode的友元类.
(2)构造存取迷宫的二维指针GetMaze(int m,int n)
(3)恢复迷宫Restore(int **maze,int m,int n) (
4)在迷宫中寻找一条通路Mazepath(int **maze,int m,int n)
(5)输出所找到的通路PrintPath()
(6) 定义当前位置移动的4个方向move数组.
三.总体设计
㈠存储结构:
首先用二维指针存储迷宫数据,迷宫数据由用户输入。
一个以链表作存储结构的栈类型,然后编写一个求解迷宫的递归或非递归程序。求得的通路以三元组(i,j,d)形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向(东、南、西、北四个方向所用代表数字,自行定义)。
1.从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。
迷宫的入口点的下标为(1,1),出口点的下标为(m,n)。为处理方便起见,可在迷宫的四周加一圈障碍。对于迷宫的任一位置,均可约定有东、南、西、北四个方向可通。经过的位置把0变为-1,带输出迷宫路径后在恢复迷宫院士为止
2. 本程序有三个模块:
⑴ 主程序模块
⑵ 三个类模块即其对象:实现栈链表抽象数据类型;
⑶ 迷宫二维指针单元模块:存储迷宫,,寻路径,输出迷宫,恢复迷宫。
(二)流程图
存取迷宫
存取迷宫GetMaze(int m,int n)
求取一条路径
MazePath()
if(p.GetPop().x==q.GetPop().xp.GetPop().y==q.GetPop().y)
输入迷宫的长和宽
内容
显示结果
Printpath()
迷宫无路经
END
数组move用于更改方向,函数Push, PrintPath, Restore
调用
函数GetPop, Push,
Pop
恢复迷宫
Restore()
调用
四.详细设计
(一).基本算法:
首先用二维指针存储迷宫数据,迷宫数据由用户输入。
一个以链表作存储结构的栈类型,然后编写一个求解迷宫的递归或非递归程序。求得的通路以三元组(i,j,d)形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方
您可能关注的文档
最近下载
- 建筑工程危险源识别及预防措施.doc VIP
- 团餐的工作流程.pptx VIP
- 华能汶上西曼克400KWP分布式光伏项目EPC总承包工程技术规范书.pdf VIP
- 二类医疗器械经营质量管理制度.docx VIP
- 超高压气井井口除砂器及现场应用.pptx VIP
- 2023年专升本考试:专升本《政治》历年真题汇编(共184题).doc VIP
- 汇川INOVANCE MD290系列通用变频器综合手册.PDF VIP
- 第6课 从小爱科学 第2课时(教学课件)2025统编版道德与法治三年级上册.pptx
- 2025年江苏省职业院校技能大赛中职组(法律实务)考试题库(含答案).doc VIP
- ISO9001质量管理体系基础培训-适合新人培训.ppt
文档评论(0)