文档详情

迷宫问题实验报告(c++编写,附源代码).doc

发布:2017-06-22约8.51千字共19页下载文档
文本预览下载声明
迷宫问题实验报告 级 班 年 月 日姓名 学号_ 。 设定迷宫或自动生成迷宫。设定迷宫或自动生成迷宫。  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,且当前结点没有在栈中出
显示全部
相似文档