- 3
- 0
- 约5.31千字
- 约 16页
- 2023-07-20 发布于湖北
- 举报
数据结构课程设计报告
设计题目: 迷宫问题数据结构课程设计 _
班 级: 计科152
学 号:
姓 名: 徐昌港
南京农业大学计算机系
数据结构课程设计报告内容
课程设计题目
迷宫问题
以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
二.算法设计思想
1.需求分析
(1)迷宫数据用一个二维数组int maze[row][col]来存储,在定义了迷宫的行列数后,用两个for循环来录入迷宫数据,并在迷宫周围加墙壁。
(2)迷宫的入口位置和出口位置可以由用户自己决定。
2.概要设计
(1)主程序模块:
void main()
{
int maze[row][col];
struct mark start,end; 细设计
(1)坐标位置类型
struct mark{
int a,b; main() 定义方向二维数组初始化链栈,并将入口,出口信息入栈是栈是否为空否当前坐标周围是否有方向可以探索否是删除栈中此步信息换个方向搜索坐标移动是此坐标周围有无障碍否迷宫无出路此坐标信息入栈此坐标是否为出口是栈逆置并输出路线 结束 主程序 maze_path built_maze push_stack stack_empty pop initstack户使用说明
main()
定义方向二维数组
初始化链栈,并将入口,出口信息入栈
是
栈是否为空
否
当前坐标周围是否有方向可以探索
否
是
删除栈中此步信息
换个方向搜索
坐标移动
是
此坐标周围有无障碍
否
迷宫无出路
此坐标信息入栈
此坐标是否为出口
是
栈逆置并输出路线
结束
主程序
maze_path
built_maze
push_stack
stack_empty
pop
initstack
(1)本程序的运行环境为debug运行环境,执行文件为:.cpp;
(2)用VC++运行文件后出现以下窗口:
点击运行程序
出现以下窗口后
输入迷宫的行列数,回车;再继续输入迷宫的数据,1表示障碍,0表示通路;再输入入口坐标和出口坐标,回车。就可以显示出迷宫路径。
测试结果
输入行列数:5,5
输入迷宫数据为:0 0 0 1 1
1 1 0 1 1
0 0 0 1 0
0 1 1 0 0
0 0 0 0 0
出口位置:1,1
出口位置:5,5
(2)输入行列数:4,9
输入迷宫数据为:0 0 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0 0
0 0 1 1 1 0 0 1 1
0 0 1 1 1 0 1 0 0
输入入口坐标:1,1
输入出口坐标:4,9
(3)输入行列数:9,8
输入迷宫数据为:0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0
0 0 0 0 1 1 0 1
0 1 1 1 0 0 1 0
0 0 0 1 0 0 0 0
0 1 0 0 0 1 0 1
0 1 1 1 1 0 0 1
1 1 0 0 0 1 0 1
1 1 0 0 0 0 0 0
输入入口坐标:1,1
输入出口坐标:9,8
调试分析
在刚开始写完代码后,运行发现程序只能运行简单
原创力文档

文档评论(0)