




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构集中上机试验报告学院: 计算机科学与技术 专业:计算机科学与技术学号:00000000 班级:(6) 姓名: 20010.10.27题目:编制一个求解迷宫通路的程序 以一个M*N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。实验要求: 实现一个以链表作存储结构的栈类型。然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i , j , d)的形式输出,其中(i , j )指示迷宫中的一个坐标,d表示走到下一坐标的方向。实验过程:1.基本算法以及分析:本程序主要是以链表构造栈的形式,寻找迷宫路径,根据创立的结点,输入结点里的一些数据,如下struct Stack /构造栈int Maze_x,Maze_y; /定义迷宫X,Y坐标Stack * next; /定义栈指针;程序由主函数开始,首先,定义一个二维数组迷宫。选择开始坐标点,然后,开始入栈,利用各个位置的判断循环建立结点,记录各个位置的数据,若走进死胡同则退栈,并且判断是否栈空,找到路径并到达出口后将栈倒置,使其按从入口到出口的顺序输出,之后调用迷宫图案输出函数,使其按要求输出。2.程序源代码: 迷宫问题#include#includeusing namespace std;struct Stack /构造栈int Maze_x,Maze_y,Maze_z; /定义迷宫X,Y坐标,z方向Stack * next; /定义栈指针;Stack *ps; /链头指针void Pop() /出栈函数Stack *p; p = ps;ps=ps-next;delete p; void push(int x,int y,int z) /进栈 函数Stack *t;t = new Stack;t-Maze_x = x;t-Maze_y = y;t-Maze_z = z; t-next = ps;ps = t;void Mazepath(int a10,int i,int j) /迷宫路线寻找 函数aij=2;int c,d,m=1; /定义变量c,d为出口坐标,变量m作为走过的步数coutcd;while(i!=c | j!=d) /判断是否到达出口if(aij+1=0) /判断右边是否可行 push(i,j,1);j+; aij = 2; /标记走过的位置else if(ai+1j=0) /判断下边是否可行push(i,j,2);i+;aij = 2; /标记走过的位置else if(aij-1=0) /判断左边是否可行 push(i,j,3);j-;aij = 2; /标记走过的位置else if(ai-1j=0) /判断上边是否可行push(i,j,4);i-;aij = 2; /标记走过的位置else /四个方向都不可行,退栈int e1,e2; Stack *p; p = ps; ps=ps-next;e1=p-Maze_x;e2=p-Maze_y;ae1e2=3; /标记走过的死胡同坐标 delete p; /删除栈顶元素i = ps-Maze_x;j = ps-Maze_y;if(ps=NULL) /判断栈空否coutno path!next = NULL;while(ps!=NULL) /倒置栈中的数据,使其从开始坐标输出 Stack *t;t = ps;ps = ps-next;t-next = pk-next; pk-next = t; Stack *k=pk;pk = pk-next; delete(k); /释放PK空间while(pk!=NULL) /输出走过的坐标 cout(Maze_x,Maze_y,Maze_z)next;delete k;coutendl;coutendl;void PrintMaze(int a10) /迷宫图案输出 函数for(int i=0;i11;i+)for(int j=0;j10;j+)if(aij=1)coutsetw(2)#; /符号#标记为迷宫的围墙else if(aij=2)coutsetw(2)*; /符号*标记为走过的路线else if(aij=3)coutsetw(2); /符号标记为死胡同的路线else if(aij=0)coutsetw(2) ; /空格标记为可走但没走过的路线coutsetw(8) endl;int main() /主 函数int Maze1110=1,1,1,1,1,1,1,1,1,1, /二维数组直接定义迷宫,1为围墙,0为可走的路线 1,0,0,1,0,0,0,1,0,1, 1,0,0,1,0,0,0,1,0,1, 1,0,0,0,0,1,1,0,1,1, 1,0,1,1,1,0,0,1,0,1, 1,0,0,0,1,0,0,0,0,1, 1,0,1,0,0,0,1,0,1,1, 1,0,1,1,1,1,0,0,1,1, 1,1,1,0,0,0,1,0,1,1, 1,1,1,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1,1; cout开始坐标:;cout11 21 31 41 51 61 71endl; coutab; Mazepath(Maze,a,b);cout迷宫路线图案:endl;coutendl; PrintMaze(Maze);coutendl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国建设银行贷款合同书
- 人我自信我快乐【解锁自我说明书】 2025-2026学年北师大版(2015)初中心理健康七年级全一册
- 蒙商银行笔试题库及答案
- 2025年教师师德知识考核题库100题及答案(三)
- 电器维修公司财务总监述职报告
- 2025浙江丽水市莲都区城乡建设投资集团有限公司选聘市场化高级管理人员1人笔试参考题库附带答案详解
- 2025江西吉安市青原区睿才人力资源有限公司面向社会招聘3名临聘人员拟入闱考试历年参考题附答案详解
- 2025广东广州花都城投建设管理有限公司拟录用人员(第二批)笔试参考题库附带答案详解
- 2025年国家能源投资集团有限责任公司高校毕业生乡村振兴专项招聘(50人)考试历年参考题附答案详解
- 2025年辅导员职业资格考试题库:大学生就业讲座组织与实施试题
- 借款抵押合同协议书
- 2025年“铸牢中华民族共同体意识”应知应会知识竞赛题库试卷及答案
- 职业人群心理健康促进指南 2025
- 无人机教育培训创业计划书
- 2025-2030全球及中国高级无线路由器行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 中建八局《建筑工程质量管理口袋书~基础、主体结构、装饰分册》
- 银行外包服务管理应急预案
- 2025新修订《代表法》五大亮点解读
- 通信有限公司FY02绩效考核办法
- 【西安交通大学】2025年电力人工智能多模态大模型创新技术及应用报告
- 宪法伴我们成长主题班会课件
评论
0/150
提交评论