数据结构课程设计迷宫问题求解

数据结构课程设计迷宫问题求解

ID:10999605

大小:217.50 KB

页数:14页

时间:2018-07-09

数据结构课程设计迷宫问题求解_第1页
数据结构课程设计迷宫问题求解_第2页
数据结构课程设计迷宫问题求解_第3页
数据结构课程设计迷宫问题求解_第4页
数据结构课程设计迷宫问题求解_第5页
资源描述:

《数据结构课程设计迷宫问题求解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、扬州大学信息工程学院《数据结构》---课程设计报告题目:迷宫问题班级:计科1301学号:131404126姓名:张艳指导教师:王丽爱14目录1课程题目2需求分析2.1功能与数据需求2.1.1题目要求的功能2.1.2扩展功能2.2界面需求2.3开发环境与运行需求3概要设计3.1主要数据结构3.2程序总体结构3.3各模块函数说明4详细设计4.1算法分析与设计4.2主要程序段设计5测试6附程序源代码14一、设计题目迷宫问题二、需求分析2.1功能与数据需求迷宫求解问题描述:以一个m×n的长方形表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口

2、到出口的通路,或得出没有通路的结论。2.1.1题目要求的功能基本要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如:对于下列数据的迷宫,输出的一条通路为:(1,1,1),(1,2,2),(2,2,2)(3,2,3),(3,1,2),…。测试数据:迷宫的测试数据如下:左上角(1,1)为入口,右下角(9,8)为出口。0010001000100010000011010111001000010000010001010111100111000101

3、11000000123456782.1.2扩展功能(1)编写递归形式的算法,求得迷宫中所有可能的通路;(2)以方阵形式输出迷宫及其通路2.2界面需求请求输入进入程序请求输入起始位置请求输入终点位置输出方阵迷宫输出路径输出方阵路径2.3开发环境与运行需求VisualC++6.014三、概要设计3.1主要数据结构定义模块函数模块主函数输入起始位置,终点位置判断首节点是否为通路判断路径能否走通对坐标标记是否到达迷宫出口处左边是否存在通路下边是否存在通路右边是否存在通路上边是否存在通路存储路径,将路径入栈有解迷宫无解迷宫YNYNY输出迷宫选择路径3.3各模块函数说明typedefs

4、truct{14intpos_x[length];//进栈坐标intpos_y[length];inttop;intbase;}Stack;//新建结构体voidinitStack(Stack*p)//初始化栈Push(Stack*p,intx,inty,intd)//入栈具体操作Pop(Stack*p,intread[2],intd)//出栈并读出前一步的坐标initMaze(intMaze[10][9])//建立迷宫Ways(Stack*p,intMaze[10][9],intrukou_x,intrukou_y,intchukou_x,intchukou_y,intd

5、)//具体路径的求解menu();//调用菜单函数main();//实现迷宫求解的主函数带头结点的单循环链表抽象数据类型SCLinList,其中包括基本操作的函数有:初始化操作函数、插入一个结点操作函数、删除一个结点操作函数、取一个结点数据操作函数和判表是否非空操作函数。该抽象数据类型文件名为SCLinList.h。JesephRing()函数是实现问题要求的主要函数。voidSCLLDeleteAfter(SCLNode*p),其功能是删除带头结点的单循环链表中指针p所指结点的下一个结点。voidJesephRing(SCLNode*head,intm),其功能是对带头结

6、点的单循环链表head,以m为初始报数上限值实现问题要求。voidmain(void),主函数,功能是给出测试数据值,建立测试数据值的带头结点单循环链表,调用JesephRing()函数实现问题要求。四、详细设计迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按左、右、上、下4个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果4方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。每前进或后退一步,都要进行判断:若前进到了出口处,则说明找到了一条合适的通路;若退回到了入口处,则说明不存在合法的通路到达出口

7、。用一个二维指针数组迷宫表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁)。迷宫的入口点在位置(1,1)处,出口点在位置(m,n)处。设计一个模拟走迷宫的算法,为其寻找一条从入口点到出口点的通路。二维数组的第0行、第m+1行、第0列、第m+1列元素全置成“1”,表示迷宫的外墙;第1行第1列元素和第m行第m列元素置成“0”,表示迷宫的入口和出口;假设当前所在位置是(x,y)。沿某个方向前进一步,它可能到达的位置最多有4。14JesephRing()函数作为主要函数,其算法思想是:从1至m对带头结点的单

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

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

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