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

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
迷宫问题实验报告(c编写,附源代码)

迷宫问题实验报告 级 班 年 月 日姓名 学号_ 。 设定迷宫或自动生成迷宫。设定迷宫或自动生成迷宫。  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,且当前结点没有在栈中出

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档