- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计迷宫程序
滨海学院课程设计
目录
课程设计目的
功能说明
详细设计
3.1.功能模块设计
3.1.1.主函数main()执行流程图
3.1.2.创建模块
3.1.3.操作模块
3.1.4.显示模块
3.1.5.其他模块
3.2.数据结构设计
3.3.函数功能描述
四.程序实现
4.1.源码分析
4.2.调试结果
4.3.遇到的问题及解决
4.4.时间复杂度分析
4.5.算法的改进思想
五.结束语
六.参考文献
课程设计目的
理解和掌握双向链表的数据结构。
了解迷宫问题的提出背景、机器穷举法求解思路。
使用机器穷举法和双向链表结构实现迷宫路径的查找。
设计实现一个完整的迷宫求解程序。
功能说明
整个实验将实现迷宫路径的查找,并图形化输出其中最短的路径。本实验脚步的存放使用双向链表实现,迷宫使用二维数组存放。机器通过穷举法解出迷宫的最短路径,储存在双向链表中,最后输出。整个实验分为以下几个模块:
创建模块。本实验的创建包含两方面,迷宫的定义和脚步的初始化。迷宫的定义通过修改二维数组实现,最终创建一个确定的迷宫。脚步的初始化由程序自行完成,最终建立一个双向链表的附加头结点。
路径查找模块。路径查找核心分为两个部分:路径查找、更优解替换。路径查找包括可通性检查、脚步前进、脚步后退三个模块。可通性检查会检查当前脚步的四个方向是否有通路。脚步前进可以在有通路的情况下抵达下一个点,并记录在脚步双向链表中。脚步后退使在当前脚步无路的情况下后退一步,并转向其他方向,同时删除链表中最后一个脚步。当求出的路径比上一次求出的路径更短时,更优解替换将更优解替换进路线存储链表。
输出模块。实现迷宫解的图形化显示和路径的坐标输出。
其他模块。格式化模块,用于迷宫求解后的处理。迷宫数组改写模块,按照求解的结果改写迷宫二维数组,以满足最终输出需要。
脚步后退
脚步前进
可通性检查
迷宫定义
脚步初始化
路径查找
更优解替换
迷宫解图形化显示
路径坐标输出
格式化模块
迷宫数组改写
迷宫路径查找程序
其他模块
输出模块
路径查找模块
创建模块
图1 功能模块图
详细设计
3.1.功能模块设计
3.1.1.主函数main()执行流程图
程序启动时,执行main()函数输出菜单。用户根据菜单的提示输入要执行的功能,程序会根据用户的选择执行不同的功能。
程序详细功能如下:
自动演示:命令1,由程序自动生成一个迷宫,并进行路径求解的演示。
手动迷宫:命令2,由用户自行创建一个迷宫,定义迷宫的大小、形状等,程序将对用户指定的迷宫进行求解。
程序帮助:命令3,显示程序帮助和必要信息。
退出:命令4,退出程序。
执行流程如下图:
进入do-while()循环
输出菜单
输入命令
判断命令,完成相应功能
命令是否为4
结束
否
是
开始
图2 主函数main()执行流程图
3.1.2.创建模块
本模块将进行待解迷宫的创建。
1.在自动演示中,机器会调用autocreat()函数自动创建一个10*10的迷宫。
2.在手动迷宫中,程序会使用creat()函数,用户可以通过指定迷宫大小m*n,输入迷宫每一行的数据来自行创建迷宫。
3.1.3.路径查找模块
1.路径查找。
本模块实现了路径的查找和脚步的移动。思路是依次判断上右下左四个方向,若可以通过则前进,不可通过则转向下一个方向,四个方向都不可通过则后退。
1可通性检查。可通性检查用来判断指定的方向是否可以通过。需要判断两方面内容,即下一点是否有障碍(通过chk()函数完成)和下一点是否已包含在了已有路径之中。若同时满足无障碍和无包含条件,则可以通过。否则不能通过。
2脚步前进。下一点若经过检查可以通过,则通过move()函数完成前进。“前进”的实现有两方面,第一方面,将新脚步纳入双向链表中,另一方面,在迷宫数组中将本步坐标所指标记为“已走”。
3脚步后退。若本步四个方向都不能行走,则通过back()函数退后。退后包括两方面,一方面把链表中最后一个节点抛弃,当前脚步指向倒数第二个节点。另一方面,将迷宫数组中已抛弃节点指向的元素重新标记为“未走”,以便进行其他路径的寻路操作时可以顺利通过。
2.更优解替换。
本模块完成了更优解的替换。当程序查找到比已存解更短的解时,将会销毁已存解,并将新解作为优解。直到最后所有的路径都搜索完毕,优解所存的路径即为最短路径。
3.1.3.输出模块
输出模块调用outlin()函数,根据不同的参数值,输出不同的内容。主要功能是输出迷宫的图形化路径,并输出此路径的坐标顺序表示。
3.1.4.其他模块
1.格式化模块。调用formatmaze()函数,初始化存储迷宫的二维数组、各变量值,销毁上次求解时产生的双向链表,释放内存空间。
2. 迷宫数组改写模块,调用revise()函数,按
您可能关注的文档
- 某项目悬挑式卸料平台专项施工方案.doc
- 银行同业业务发展及其对货币供给的影响.doc
- 直线与平面垂直的判定.教案.doc
- 八年级周末练习.doc
- 高一上学期期中物理试题.doc
- 期刊管理系统 软件开发计划.doc
- ok25种让你精力充沛的方法.doc
- 兴义八中2013届九年级高素养班半期高一政治必修一考试试卷.doc
- 世界上最佳的30个土木工程类博客.doc
- 次氯酸钠预氧化处理微污染水源水的试验.pdf
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
最近下载
- JGJ33-2012 建筑机械使用安全技术规程.docx VIP
- TB_10307-2020 铁路通信、信号、信息工程施工安全技术规程.docx VIP
- 简明新疆地方史读本电子版 .pdf VIP
- 基于PLC的加热反应炉自动控制系统设计.pdf VIP
- 抗病毒药物的合理使用课件.pptx VIP
- TB10181-2017 铁路隧道盾构法技术规程.docx VIP
- 静脉输液课件(共87张PPT).pptx VIP
- 《商业银行经营与管理》22春平时作业1答卷.doc VIP
- 2024-2025学年小学美术五年级上册桂美版(2024)教学设计合集.docx
- 2022年版初中物理课程标准新课标考试题库及答案1 .pdf VIP
文档评论(0)