数据结构c语言课程设计报告

数据结构c语言课程设计报告

ID:17651786

大小:161.00 KB

页数:16页

时间:2018-09-04

数据结构c语言课程设计报告_第1页
数据结构c语言课程设计报告_第2页
数据结构c语言课程设计报告_第3页
数据结构c语言课程设计报告_第4页
数据结构c语言课程设计报告_第5页
资源描述:

《数据结构c语言课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、扬州职业大学数据结构课程设计报告设计题目:迷宫求解专业机电一体化班级08专接本学生学号104910252011指导教师高在村完成时间2011.516扬州职业大学目录一.实验内容3二.需求分析3三.总体设计3四.详细设计5五.代码9六.测试14七.总结16参考文献1716扬州职业大学一.实验内容任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;要求:界面友好,函数功能要划分好;总体设计应画一流程图;程序要加必要的注释;要提供程序设计方案;程序一定要经得起测试;宁可功能少一点,也要能运行起来,不能运行的程序是没有价值的。二.需

2、求分析1.可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;要求:使用非递归算法。2.用户可以根据自己的需求进行输入所需的迷宫,其中1表示迷宫的墙壁,0表示迷宫的通路,从而建立自己的迷宫;3.用户还可以自己设计迷宫的入口坐标,当然也可以设计出口了;4.程序执行的命令包括:(1)构造栈Stack,T描述迷宫中当前位置的结构类型,LinkNode链表结点三个类,其中Stack是Linknode的友元类.(2)构造存取迷宫的二维指针GetMaze(int&m,int&n)(3)恢复迷宫Restore(int**maze,intm,in

3、tn)(4)在迷宫中寻找一条通路Mazepath(int**maze,intm,intn)(5)输出所找到的通路PrintPath()(6)定义当前位置移动的4个方向move数组.三.总体设计㈠存储结构:16扬州职业大学首先用二维指针存储迷宫数据,迷宫数据由用户输入。一个以链表作存储结构的栈类型,然后编写一个求解迷宫的递归或非递归程序。求得的通路以三元组(i,j,d)形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向(东、南、西、北四个方向所用代表数字,自行定义)。1.从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路

4、退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。迷宫的入口点的下标为(1,1),出口点的下标为(m,n)。为处理方便起见,可在迷宫的四周加一圈障碍。对于迷宫的任一位置,均可约定有东、南、西、北四个方向可通。经过的位置把0变为-1,带输出迷宫路径后在恢复迷宫院士为止2.本程序有三个模块:⑴主程序模块⑵三个类模块即其对象:实现栈链表抽象数据类型;⑶迷宫二维指针单元模块:存储迷宫,,寻路径,输出迷宫,恢复迷宫。(二)流程图16扬州职业大学存取迷宫GetMaze(int&m,int&n)求取一条路径

5、MazePath()if(p.GetPop().x==q.GetPop().x&&p.GetPop().y==q.GetPop().y)输入迷宫的长和宽内容显示结果Printpath()迷宫无路经END数组move用于更改方向,函数Push,PrintPath,Restore调用函数GetPop,Push,Pop恢复迷宫Restore()调用四.详细设计(一).基本算法:16扬州职业大学首先用二维指针存储迷宫数据,迷宫数据由用户输入。一个以链表作存储结构的栈类型,然后编写一个求解迷宫的递归或非递归程序。求得的通路以三元组(i,j,d)形式输出,其中:(i,j)指

6、示迷宫中的一个坐标,d表示走到下一坐标的方向(东、南、西、北四个方向所用代表数字,自行定义)。迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按东、南、西、北4个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果4方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。每前进或后退一步,都要进行判断:若前进到了出口处,则说明找到了一条通路;若退回到了入口处,则说明不存在通路。用一个二维指针数组迷宫表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁)。迷宫的入口点在位置(1,1)处,出

7、口点在位置(m,n)处。设计一个模拟走迷宫的算法,为其寻找一条从入口点到出口点的通路。二维数组的第0行、第m+1行、第0列、第m+1列元素全置成“1”,表示迷宫的外墙;第1行第1列元素和第m行第m列元素置成“0”,表示迷宫的入口和出口;其余元素值用GetMaze函数获取.假设当前所在位置是(x,y)。沿某个方向前进一步,它可能到达的位置最多有4。如果用二维数组move记录4方向上行下标增量和列下标增量,则沿第i个方向前进一步,可能到达的新位置坐标可利用move数组确定:x=x+move[loop][0]y=y+move[loop][1]从迷宫的入口位置开始,沿图

8、示方向顺序依次进行搜索。

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

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

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