迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc

迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc

ID:58482356

大小:125.50 KB

页数:21页

时间:2020-05-16

迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc_第1页
迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc_第2页
迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc_第3页
迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc_第4页
迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc_第5页
资源描述:

《迷宫求解-数据结构实训报告-附源代码--迷宫与栈-小老鼠吃奶酪穷举求解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构实训报告设计题目:迷宫的求解(B)系别:XXXXXXXXXX专业(方向):XXXXXXXX年级、班:XXXXXXXXXXXX学生姓名:XXX学生学号:XXXXXX指导教师:XXX日期:XXXX年XX月XX号目录一、系统开发的背景1二、系统分析与设计1(一)系统的分析1(二)系统的具体分析设计2三、系统的功能要求2、3(一)系统模块结构设计3四、系统的设计与实现4(一)在栈中实现迷宫的具体操作4、7(二)栈的生成7、8(三)整个系统的生成流程图…………………………………………………………9、

2、10五、程序测试与步骤10(一)测试迷宫与栈问题可通的程序设计…………..……………………………………10、11(二)测试迷宫与栈问题不可通的程序设计…………………………………………..…..12六、总结………………………………………………………………………………………….12、13七、附件(代码、部分图表)14、19迷宫的求解一、系统开发的背景迷宫求解其实就是迷宫与栈的问题,训练老鼠在迷宫中寻找食物。于是,老鼠过迷宫问题就此产生,这是一个很有趣的计算机问题,主要利用“栈”是老鼠通过尝试的办法从入

3、口穿过迷宫走到出口。迷宫只有两个门,一个叫做入口,另一个叫做出口。把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫。迷宫中设置很多隔壁,对前进方向形成了多处障碍,在迷宫的唯一出口处放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口。为了使迷宫更佳富有趣味性,按照设计要求,我还设置地雷,如果老鼠在前进的过程中踩到地雷,则要重新回到入口,继续寻找能吃到奶酪的通路。求解迷宫问题,即找出从入口到出口的路径。而数据结构则是数据的组织形式,可以用来表示特定的对象数据,在计算机中对数据的一种存储和组织形式,因此选

4、用栈思想实现迷宫游戏的基本操作,也是我设计迷宫求解的基本背景。二、系统分析与设计(一)系统分析:迷宫问题通常是用“穷举求解”方法解决,即从入口出发,顺着某个方向进行搜索,若能走通,则继续往前走;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。另外附加的老鼠踩地雷则类似于是在通路上埋藏的隐形墙,如果踩到到雷则返回起点,寻找下一条通路。栈是一个后进先出的结构,可以用来保存从入口到当前位置的路径。定义迷宫类型来存储迷宫数

5、据,通常设定入口点的下标,出口点的下标,为处理方便起见,在迷宫的周围加一圈障碍,对于迷宫任何一个位置均约定为东、西、南、北四个方向,而东北、东南、西北、西南则是需要利用到两个下标进行移动。(一)系统具体设计在某个点上,按照一定的顺序(在本程序中顺序为上、右、下、左,而东北、东南、西北、西南利用的是两个下标移动)对周围的墙、路进行判断(在本程序中分别用1、0代替),若周围某个位置为0,则移动到该点上,再进行下一次判断;若周围的位置都为1(即没有通路),则一步步原路返回并判断有无其他通路,然后再次进行

6、相同的判断,直到走到终点为止,或者确认没有任何通路后终止程序,附加踩雷(在本程序中用5代替)则返回到起点重新寻找下一条通路,并显示踩雷路线。要实现上述算法,需要用到栈的思想。栈里面压的是走过的路径,若遇到死路,则将该位置(在栈的顶层)弹出,再进行下一次判断;若遇到通路,则将该位置压栈并进行下一次判断。如此反复循环,直到程序结束。此时,若迷宫有通路,则栈中存储的是迷宫通路坐标的倒序排列,再把所有坐标顺序打印后,即可得到正确的迷宫通路,附加的踩雷则是相当于在通路上隐形了一道墙,踩雷,则从栈顶弹出,返回

7、起点,再进行二次判断另一条通路。二、系统功能要求(1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。(2)编写递归形式的算法,求得迷宫中所有可能的通路。(3)以方阵形式输出迷宫及其通路。(一)系统模块结构设计通过对系统功能的分析,迷宫与栈问题的功

8、能如图1所示。主函数输出迷宫求解所有路径初始化迷宫判断栈是否为空出栈入栈初始化栈判断能否通过,是否踩雷留下标记判断方向留下足迹图1:迷宫实现的主函数功能图通过上图的功能分析,把整个系统划分为2个模块:1、通过栈后进先出的结构,实现栈判断,首先判断栈是否为空,如果不为空,则实现栈中基本的入栈,出栈的实现。顺序栈是用一组地址连续的内存单元依次保存栈中的运算规则,在链式存储中链表首部head指针所指向元素为栈顶元素,栈表尾部指向地址为NULL为栈底。1、借助函数的嵌套与使用,由while

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。