数据结构实验报告
实习1 栈和队列及其应用
题目:迷宫问题
班级:1403011班 姓名:付尧 学号:[1**********] 完成日期:2015.11.25
一.需求分析
1.以二维数组maze[m][n]表示迷宫,再为周围加一圈障碍。数组以元素值为0表示通路,1表示障碍。
2.用户以文件的形式输入迷宫的数据:文件中第一行的数据为迷宫的行数m和列数n;从第二行到第m+1行(每行n个数)为迷宫值。
3.迷宫的入口位置默认为(1,1),出口位置默认为(m,n)。
4.程序执行的命令包括:
(1)创建迷宫;(2)求解迷宫;(3)输出迷宫的解;(4)结束。
5.测试数据
测试数据见原题,已存储在maze.txt文件中。输出内容为:(1,1,1),(2,1,1),(3,1,1),(4,1,1),(5,1,1),(6,1,1),(5,1,2),(5,2,2),(5,3,1),(6,3,2),(6,4,2),(6,5,3),(5,5,2),(5,6,2),(5,7,1),(6,7,1),(7,7,1),(8,7,1),(9,7,2),(9,8,0)
二.概要设计
为了实现程序上述功能,应以队列为存储结构。
1. 基本操作:
void GoMaze( )
操作结果:求解迷宫,并输出一条通路。
2. 本程序包含三个模块:
(1)构建迷宫及主程序模块;
(3)执行迷宫求解模块;
三.详细设计
1.元素类型,结点类型和指针类型:
typedef struct {
int ord;
int x,y;
int di;
int pre;
}elem;
elem **maze;
int i,j,m,n,a,b;
int c=0;
queue s;
6.每个模块的分析:
(1)构建迷宫及主程序模块: