迷宫问题实验报告(c++编写,附源代码).doc
文本预览下载声明
迷宫问题实验报告
级 班 年 月 日姓名 学号_
。
设定迷宫或自动生成迷宫。设定迷宫或自动生成迷宫。 typedef struct//定义迷宫结构体
{
int maze_array[maxsize][maxsize];//二维数组存放迷宫每个点是通畅或阻隔的信息
int max_x,max_y; //迷宫的行数和和列数
}
定义迷宫中点的指针的结构体
typedef struct point
{
int vex_x,vex_y; //结点的横纵坐标(横坐标为行号,纵坐标为列号)
struct point *ahead;//在链栈中,指向前一个结点的指针
int direction; //从当前结点走至下一个结点的方向
};
基本操作:
A. Maze creat_manual()
初始条件:无 操作结果:手动创建一个迷宫。
B. Maze creat_automatic()
初始条件:无
操作结果:自动创建一个迷宫。
C. int found(int x,int y,Point *head)
初始条件:存在一个存放结点的链栈
操作结果:查找栈中是否有head指针内所含的坐标;若含,则返回1,否则返回0。
D. Point * find_road(Maze a)
初始条件:存在一个迷宫
操作结果:返回一条通路或者NULL
E. void display(Point *po,Maze a)
初始条件:存在一个迷宫
操作结果:输出结果。
程序包含6个函数:
主函数main() 手动创建一个迷宫 Maze creat_manual();
自动创建一个迷宫 Maze creat_automatic();
查找栈中是否有head指针内所含的坐标 int found(int x,int y,Point *head);
迷宫寻路函数 Point * find_road(Maze a);
显示迷宫信息函数 void display(Point *po,Maze a);
各函数间关系如下:
4.详细设计
定义迷宫结构体
typedef struct
{
int maze_array[maxsize][maxsize];
//二维数组存放迷宫每个点是通畅或阻隔的信息
int max_x,max_y; //迷宫的行数和和列数
}Maze;
定义迷宫中点的指针的结构体
typedef struct point
{
int vex_x,vex_y; //结点的横纵坐标(横坐标为行号,纵坐标为列号)
struct point *ahead;//在链栈中,指向前一个结点的指针
int direction; //从当前结点走至下一个结点的方向
}Point;
迷宫的基本操作如下
Maze creat_manual()//手动创建迷宫
{
输入迷宫的行数和列数;
依次输入各点的值;
}
Maze creat_automatic()//自动创建迷宫
{
输入迷宫的行数和列数;
随机产生各点的值;
入口结点和出口结点赋值为0;
打印迷宫;
}
int found(int x,int y,Point *head)
{
查找栈中是否有head指针内所含的坐标
若含,则返回1;
否则返回0
}
Point * find_road(Maze a)//迷宫寻路函数,返回一条通路或者NULL
{ int j,find,x,y;
do
{ while(方向j4)
{ find=0;
switch(j)//1234分别表示东南西北
{ case 1:
if(纵坐标加1后在迷宫内,且当前结点为0,且当前结点没有在栈中出现)
{
当前结点进栈;
把方向j赋予当前结点方向;
find=1;
}break;
case 2:
if(横坐标加1后在迷宫内,且当前结点为0,且当前结点没有在栈中出现)
{ 当前结点进栈;
把方向j赋予当前结点方向;
find=1;
}break;
case 3:
if(纵坐标减1后在迷宫内,且当前结点为0,且当前结点没有在栈中出
显示全部