迷宫问题实验报告

迷宫问题实验报告

ID:11459026

大小:103.50 KB

页数:15页

时间:2018-07-12

迷宫问题实验报告_第1页
迷宫问题实验报告_第2页
迷宫问题实验报告_第3页
迷宫问题实验报告_第4页
迷宫问题实验报告_第5页
资源描述:

《迷宫问题实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、武汉纺织大学数学与计算机学院数据结构课程设计报告迷宫问题求解学生姓名:学号:班级:指导老师:报告日期:一、  问题描述以一个mxn的长方矩阵表示迷宫,1和0分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出从入口到出口的通路,或者没有通路的结论。二、  需求分析1、    以二维数组maze[10][10]表示迷宫,数组中以元素1表示通路,0表示障碍,迷宫的大小理论上可以不限制,但现在只提供1010大小迷宫。2、  迷宫的入口和出口需由用户自行设置。3、   以长方形矩阵的形式将迷宫及其通路输出,输出中“#”表示迷宫通路,“1”表示障碍。4、     本程序

2、只求出一条成功的通路。但是只要对函数进行小量的修改,就可以求出其他全部的路径。5、     程序执行命令为:(1)输入迷宫;(2)、求解迷宫;(3)、输出迷宫。三、  概要设计1、设定栈的抽象数据类型定义:ADTzhan{基本操作:InitStack(SqStack&S)操作结果:构造一个空栈push(s,e)初始条件:栈已经存在操作结果:将e所指向的数据加入到栈s中pop(s,e)初始条件:栈已经存在操作结果:若栈不为空,用e返回栈顶元素,并删除栈顶元素getpop(s,e)初始条件:栈已经存在操作结果:若栈不为空,用e返回栈顶元素stackempty(s)初始条件:栈

3、已经存在操作结果:判断栈是否为空。若栈为空,返回1,否则返回0}ADTzhan2、设定迷宫的抽象数据类型定义ADTmigong{基本操作:Statusprint(MazeTypemaze);          //显示迷宫StatusPass(MazeTypemaze,PosTypecurpos);    //判断当前位置是否可通StatusFootPrint(MazeType&maze,PosTypecurpos);//标记当前位置已经走过StatusMarkPrint(MazeType&maze,PosTypecurpos);  //标记当前位置不可通PosTypeN

4、extPos(PosTypecurpos,DirectiveTypedi); //进入下一位置}ADTyanshu3、本程序包括三个模块a、主程序模块voidmain(){初始化;迷宫求解;迷宫输出;}b、栈模块——实现栈的抽象数据类型c、迷宫模块——实现迷宫的抽象数据类型四、流程图将入口、出口位置传入方法里判断当前位置是否可通将元素入栈是否到达迷宫出口右边是否存在通路上边是否存在通路左边是否存在通路下边是否存在通路存储结点入栈循环结束,无解迷宫有解迷宫五、  数据结构typedefstruct//位置结构{introw;//行位置intcol;//列位置}PosType

5、;typedefstruct//迷宫类型{intarr[10][10];}MazeType;typedefstruct{intstep;//当前位置在路径上的"序号"PosTypeseat;//当前的坐标位置DirectiveTypedi;//往下一个坐标位置的方向}SElemType;typedefstruct//栈类型{SElemTypebase;//栈的尾指针SElemTypetop;//栈的头指针intstacksize;//栈的大小}SqStack;六、调试结果和分析a)测试结果实际程序执行过程如下图所示:参考文献[1]严蔚敏、吴伟民:《数据结构(C语言版)》[

6、M],清华大学出版社2007年版[2]谭浩强:《C语言设计(第三版)》[M],清华大学出版社2005年版心得体会通过这段时间的课程设计,本人对计算机的应用,数据结构的作用以及C语言的使用都有了更深的了解。尤其是C语言的进步让我深刻的感受到任何所学的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。在设计此程序时,刚开始感到比较迷茫,然后一步步分析,试着写出基本的算法,思路渐渐清晰,最后完成程序。当然也遇到不少的问题,也正是因为这些问题引发的思考给我带了收获。在遇到描写迷宫路径的算法时,我感到有些困难,后来经过一步步分析和借鉴书本上的穷举求解的

7、算法,最后把算法写出来。这次课程设计让我更加深入了解很多方面的知识,如数组的运用等等。在程序的编写中不要一味的模仿,要自己去摸索,只有带着问题反复实践,才能熟练地掌握和运用。附录、  源代码#include//头文件#include#include#include#defineOK1//宏定义#defineERROR0#defineOVERFLOW-2typedefintStatus;//函数的返回值typedefintDirectiveType;/

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

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

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