




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二(1)1实验题目: 栈和队列的应用2实验内容: 迷宫问题3实验目的: 掌握栈和队列的概念及工作原理,运用其原理完成 实验题目中的内容。4实验要求: 为了使学生更好的掌握与理解课堂上老师所讲的概 念与原理,实验前每个学生要认真预习所做的实验 内容及编写源程序代码(写在纸上与盘中均可),以 便在实验课中完成老师所布置的实验内容 5设计原理:6程序清单及注释说明: #include<stdio.h>#include<stdlib.h>#define M 15#define N 15struct mark /定义迷宫内点的坐标类型int x;int y;struct El
2、ement /"恋"栈元素,嘿嘿。int x,y; /x行,y列int d; /d下一步的方向;typedef struct LStack /链栈Element elem;struct LStack *next;*PLStack;/*栈函数*/int InitStack(PLStack &S)/构造空栈S=NULL;return 1;int StackEmpty(PLStack S)/判断栈是否为空 if(S=NULL)return 1;elsereturn 0;int Push(PLStack &S, Element e)/压入新数据元素 PLStack
3、p;p=(PLStack)malloc(sizeof(LStack);p->elem=e;p->next=S;S=p;return 1;int Pop(PLStack &S,Element &e) /栈顶元素出栈 PLStack p;if(!StackEmpty(S)e=S->elem;p=S;S=S->next;free(p);return 1;elsereturn 0;/*求迷宫路径函数*/void MazePath(struct mark start,struct mark end,int mazeMN,int diradd42) int i,j,
4、d;int a,b;Element elem,e;PLStack S1, S2;InitStack(S1);InitStack(S2);mazestart.xstart.y=2; /入口点作上标记elem.x=start.x;elem.y=start.y;elem.d=-1; /开始为-1Push(S1,elem);while(!StackEmpty(S1) /栈不为空 有路径可走Pop(S1,elem);i=elem.x;j=elem.y;d=elem.d+1; /下一个方向while(d<4) /试探东南西北各个方向a=i+diraddd0;b=j+diraddd1;if(a=end
5、.x && b=end.y && mazeab=0) /如果到了出口elem.x=i;elem.y=j;elem.d=d;Push(S1,elem);elem.x=a;elem.y=b;elem.d=886; /方向输出为-1 判断是否到了出口Push(S1,elem);printf("n0=东 1=南 2=西 3=北 886为则走出迷宫nn通路为:(行坐标,列坐标,方向)n"); while(S1) /逆置序列 并输出迷宫路径序列Pop(S1,e);Push(S2,e);while(S2)Pop(S2,e);printf("-&g
6、t;(%d,%d,%d)",e.x,e.y,e.d);return; /跳出两层循环,本来用break,但发现出错,exit又会结束程序,选用return还是不错滴o(_)o.if(mazeab=0) /找到可以前进的非出口的点mazeab=2; /标记走过此点elem.x=i;elem.y=j;elem.d=d;Push(S1,elem); /当前位置入栈i=a; /下一点转化为当前点j=b;d=-1;d+;printf("没有找到可以走出此迷宫的路径n");/*建立迷宫*/void initmaze(int mazeMN)int i,j;int m,n; /迷
7、宫行,列printf("请输入迷宫的行数 m=");scanf("%d",&m);printf("请输入迷宫的列数 n=");scanf("%d",&n);printf("n请输入迷宫的各行各列:n用空格隔开,0代表路,1代表墙n",m,n);for(i=1;i<=m;i+)for(j=1;j<=n;j+)scanf("%d",&mazeij);printf("你建立的迷宫为o(_)o.n");for(i=0;i<
8、=m+1;i+) /加一圈围墙mazei0=1;mazein+1=1;for(j=0;j<=n+1;j+)maze0j=1;mazem+1j=1;for(i=0;i<=m+1;i+) /输出迷宫for(j=0;j<=n+1;j+)printf("%d ",mazeij);printf("n");void main()int stoMN;struct mark start,end; /start,end入口和出口的坐标int add42=0,1,1,0,0,-1,-1,0;/行增量和列增量 方向依次为东西南北initmaze(sto);/建立迷宫printf("输入入口的横坐标,纵坐标逗号隔开n");scanf("%d,%d",&start.x,&start.y);printf("输入出口的横坐标,纵坐标逗号隔
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门面服装销售合同范本
- 2025建筑工程公司用工合同协议书
- 2025年合同终止与解除的备案流程解析
- 2025耕地流转合同规定
- 语言魅力提升知到课后答案智慧树章节测试答案2025年春北京城市学院
- 2025年智能家居设备采购合同
- 2024年启东市市属事业单位考试真题
- 租赁扶贫工厂合同范本
- 2024年临高县公安局招聘警务辅助人员真题
- 2024年江苏无锡高新区国企全球选聘人才新增岗位笔试真题
- 健康日用品设计与研发趋势
- 【化学】常见的盐(第1课时)-2024-2025学年九年级化学下册(人教版2024)
- 公园物业管理
- 新人教版初中英语七至九年级全部课本单词
- 宜宾市新能源产业有限公司招聘笔试冲刺题2025
- 数字化背景下国有企业财会监督体系的构建与实践创新
- 龙游经济开发区下属国资公司招聘笔试冲刺题2025
- 《海上风电设备运输规范》
- 工业园物业管理方案参考范本
- 2024年黑龙江牡丹江中考英语真题及答案
- 《电力基础设施数字化锁控系统技术》
评论
0/150
提交评论