数据结构课程设计_迷宫问题1.doc
文本预览下载声明
A所示,求出一条从入口到出口的通路,或得出没有通路的结论。 摘要 I
课程设计题目 1
1
5 3 详细设计 6
3.1 数据类型 6
.2 源代码 9
13
5 测试结果 13
6 总结 15
参考文献 17
需求分析
概要设计
①构建一个二维数组maze[M+2][N+2]用于存储迷宫矩阵
②自动或手动生成迷宫,即为二维数组maze[M+2][N+2]赋值 ③构建一个队列用于存储迷宫路径
详细设计
void shoudong_maze(int m,int n) i,j为循环变量
for(i=m)
for(j=n) i,j为循环变量
for(i=m)
for(j=n)
maze[i][j]=rand()%2 //由于rand()产生的随机数是从0到RAND_MAX,RAND_MAX是定义在stdlib.h中的,其值至少为32767),要产生从X到Y的数,只需要这样写:k=rand()%(Y-X+1)+X; i,j循环变量,将maze[i][j]输出 □、■} i,j循环变量,将maze[i][j]输出 □、■、☆}
(5)搜索迷宫路径
①迷宫中队列入队操作
void enqueue(struct point p)
{将p放入队尾,tail++} cycle!=(-1))
☆ 手动生成迷宫 请按:1 scanf(%d,i);
switch(i) case 1:请输入行列数(如果超出预设范围则提示重新输入)
shoudong_maze(m,n);
print_maze(m,n);
mgpath(maze,m,n);
if(X!=0) result_maze(m,n);case 2 :请输入行列数(如果超出预设范围则提示重新输入)
zidong_maze(m,n);
print_maze(m,n);
mgpath(maze,m,n);
if(X!=0) result_maze(m,n); case 3:cycle=(-1); break;} #includestdlib.h
#includestdio.h
#define N 39
#define M 39
int X;
int maze[N+2][M+2];
struct point{
int row,col,predecessor;
}queue[512];
int head=0,tail=0;
void shoudong_maze(int m,int n){
int i,j;
printf(\n\n);
for(i=0;im;i++)
for(j=0;jn;j++)
scanf(%d,maze[i][j]);
}
void zidong_maze(int m,int n){
int i,j;
system(pause);
for(i=0;im;i++)
for(j=0;jn;j++)
maze[i][j]=rand()%2;
}
void print_maze(int m,int n){
int i,j;
for(i=0;im;i++)
{printf(\n);
for(j=0;jn;j++)
}
}
void result_maze(int m,int n){
int i,j;
for(i=0;im;i++)
{printf(\n);
for(j=0;jn;j++)
}
}
}
void enqueue(struct point p){
queue[tail]=p;
tail++;
}
struct point dequeue(){
head++;
return queue[head-1]
显示全部