




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10 typedef structint r;int c;PosType;/通道块坐标typedef struct int ord;/通道块在路径上的序号PosType seat;/通道块的坐标位置int di;/下一个探索的方向SelemType;typedef struct int r;int c;char adr101
2、0;MazeType;/迷宫行列,内容typedef struct SelemType * base; SelemType * top;int stacksize;SqStack;void InitStack(SqStack &S)S.base=(SelemType*)malloc(STACK_INIT_SIZE * sizeof(SelemType);if(!S.base) exit(0);S.top=S.base;S.stacksize=STACK_INIT_SIZE;void Push(SqStack &S,SelemType &e)if(S.top-S.base
3、)>=S.stacksize)S.base=(SelemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)* sizeof(SelemType);if(!S.base) exit(0);S.top=S.base+S.stacksize;/溢出重新定位S.stacksize+=STACKINCREMENT;*S.top+=e;void Pop(SqStack &S,SelemType &e)if(S.top=S.base) return;e=*-S.top;void InitMaze(MazeType &maze)in
4、t i,j;maze.r=8;maze.c=8;for(i=0;i<10;i+)maze.adr0i='#'maze.adr9i='#'for(i=0;i<10;i+)maze.adri0='#'maze.adri9='#'for(i=1;i<9;i+)for(j=1;j<9;j+)maze.adrij='1'maze.adr13='#'maze.adr17='#'maze.adr23='#'maze.adr27='#' maz
5、e.adr35='#'maze.adr36='#'maze.adr42='#'maze.adr43='#'maze.adr44='#'maze.adr54='#'maze.adr62='#'maze.adr66='#'maze.adr72='#'maze.adr73='#'maze.adr74='#'maze.adr76='#'maze.adr77='#'maze.adr81='#
6、'int Pass(MazeType &maze,PosType &curpos)if(maze.adrcurpos.rcurpos.c='1')return 1;elsereturn 0;void FootPrint(MazeType &maze,PosType curpos)maze.adrcurpos.rcurpos.c='*'/已经走过的标记PosType NextPos(PosType curpos,int i)PosType nextpos;nextpos=curpos;switch(i)case 1:nextpos.
7、c+=1;break;case 2:nextpos.r+=1;break;case 3:nextpos.c-=1;break;case 4:nextpos.r-=1;break;default:printf("探寻方向错误!");return nextpos;void MarkPrint(MazeType &maze,PosType curpos)maze.adrcurpos.rcurpos.c=''/不通的标识int StackEmpty(SqStack &S)if(S.base=S.top)return 1;elsereturn 0;vo
8、id MazePath(MazeType &maze,PosType start,PosType end)SelemType e;SqStack S;InitStack(S);PosType curpos;int curstep;curpos=start;curstep=1;doif(Pass(maze,curpos)FootPrint(maze,curpos);/留下走过足迹*e.ord=curstep;e.seat=curpos;e.di=1;Push(S,e);/压入栈路径if(curpos.r=end.r&&curpos.c=end.c) return;curp
9、os=NextPos(curpos,1);/探索下一步curstep+;/ifelse/当前位置不能通过if(!StackEmpty(S) Pop(S,e);/top指针退后一下,指向上一步while(e.di=4&&!StackEmpty(S)MarkPrint(maze,e.seat);/如果此步上下左右都探索过了且栈不为空留下不通过且返回一步Pop(S,e);/while,用while是可以连续返回if(e.di<4)e.di+;Push(S,e);/换下一个方向探索curpos=NextPos(e.seat,e.di);/探索下一位置块/if/if/elsewhile(!StackEmpty(S);/mazepathvoid PrintMaze(MazeType &maze)int i,j; for(i=0;i<10;i+) printf("%4d",i);/输出行 printf("nn"); for(i=0;i<10;i+) printf("%2d",i);/输出列 for(j=0;j<10;j+) printf("%4c",maze.adrij); printf("nn"); void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏盐城市第七人民医院招录政府购买服务用工14人模拟试卷完整答案详解
- 2025河南三联科技工程有限公司招聘模拟试卷及完整答案详解1套
- 2025广东江门新会区会城街道今古洲社区公益性岗位招聘1人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025安徽宣城市中心医院第一批次招聘22人模拟试卷及答案详解(历年真题)
- 书店图书订购协议5篇
- 2025辽宁沈阳市浑南区森工林业集团有限公司招聘56人模拟试卷及1套参考答案详解
- 班组建设与安全培训课件
- 班组年后复岗安全培训课件
- 2025黑龙江绥化海伦市民政服务站招聘46人考前自测高频考点模拟试题附答案详解(典型题)
- 2025辽宁鞍山立山区教育局招聘2人考前自测高频考点模拟试题及1套参考答案详解
- 存款代持协议书范文模板
- 建筑施工企业施工项目安全生产标准化考评表
- 电梯使用单位电梯安全总监职责和电梯安全员守则
- 足太阳膀胱经(经络腧穴课件)
- 沟通的艺术智慧树知到期末考试答案章节答案2024年湖南师范大学
- 2024年四川省广安市中考数学试题(含答案逐题解析)
- 员工上下班交通安全知识培训课件
- 产品质量法-企业培训讲座
- 塑胶模具报价表范例
- 三阶魔方七步还原图文教程
- 肌肉注射评分标准
评论
0/150
提交评论