- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 PAGE1页,共NUMPAGES2页
迷宫问题实验报告
级 班 年 月 日 姓名 学号_
1.实验题目
以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
2.需求分析
本程序使用VC编写,实现设定迷宫或自动生成迷宫长方阵表的功能,并且求出一条从指定入口到指定出口的通路,或得出没有通路的结论。
① 输入的形式和输入值的范围:
A.输入指定的数字,以此选择迷宫的创建方式,分为手动创建迷宫和自动创建迷宫
B. 输入迷宫阵表的行数和列数,行数和列数不超过40行
C. 手动创建迷宫时,需要输入迷宫结点的通畅和障碍情况,0和1分别表示迷宫中的通路和障碍。
② 输出的形式:输出没有通路的结论,或者输出一个长方阵表,其中路径的每个结点都输出→、↓、←、↑之一,表示从当前结点到下一个结点的方向。
③ 程序所能达到的功能:实现设定迷宫或自动生成迷宫长方阵表的功能,并且求出一条从指定入口到指定出口的通路(迷宫的入口指定为坐标为(1,1)的结点,迷宫的出口指定为坐标为(迷宫最大行,迷宫最大列)的结点),或得出没有通路的结论。
④ 测试数据:
输入数据:
A. 出现选择生成迷宫方式的菜单时,输入1(即手动输入数据,生成迷宫);
B. 输入迷宫的行数和列数,行数输入3,列数输入3;
C. 输入每个迷宫结点的信息:
0 0 1
1 0 0
1 0 0
输出结果:
→ ↓ 1
1 → ↓
1 0 0
3.概要设计
为了实现上述程序功能,需要定义迷宫的抽象数据类型: 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个函数:
eq \o\ac(○,1)主函数main() eq \o\ac(○,2)手动创建一个迷宫 Maze creat_manual();
eq \o\ac(○,3)自动创建一个迷宫 Maze creat_automatic();
eq \o\ac(○,4)查找栈中是否有head指针内所含的坐标 int found(int x,int y,Point *head);
eq \o\ac(○,5)迷宫寻路函数 Point * find_road(Maze a);
eq \o\ac(○,6)显示迷宫信息函数 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 *ah
您可能关注的文档
- 绿色化学工艺考试习题及答案.doc
- 绿洲公司对开发项目监理单位丶施工单位考核办法.doc
- 马鞍山凤凰湖原生态休闲山庄营销企划推广方案.ppt
- 马鞍山市教育局4所学校录播教室项目 建设方案 一、功能需求 录播.doc
- 马尔康县人民医院病案回收借阅复印制度及登记本.doc
- 马来西亚槟城第二跨海大桥的结构耐久性研究与评估.doc
- 马来西亚签证申请表.doc
- 马郎小学人教版数学五下《打电话》课件.ppt
- 马龙供排水有限公司管理制度.doc
- 麦加地铁25mU形先张梁施工技术.docx
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)