c语言迷宫最完整做法

c语言迷宫最完整做法

ID:39348060

大小:87.00 KB

页数:6页

时间:2019-07-01

c语言迷宫最完整做法_第1页
c语言迷宫最完整做法_第2页
c语言迷宫最完整做法_第3页
c语言迷宫最完整做法_第4页
c语言迷宫最完整做法_第5页
资源描述:

《c语言迷宫最完整做法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#include#definestack_init_size200#definestack_increment10#defineERROE0#defineTRUE1#defineFALSE0#defineOVERFLOW0#defineOK1typedefintStatus;typedefstruct{intx;inty;}PosType;typedefstruct{intord;//通道块在路径上的“序号”PosTypesea

2、t;//通道块在迷宫中的“坐标位置”intdi;//从此通道块走向下一通道块的“方向”}SElemType;typedefstruct{SElemType*base;SElemType*top;intstacksize;}SqStack;intmg[20][20];/*随机生成迷宫的函数/*为了能够让尽量能通过,将能通过的块和不能通过的块数量比大致为2:1*/voidRandom(){inti,j,k;srand(time(NULL));mg[1][0]=mg[1][1]=mg[18][19]=0;//将入口、出

3、口设置为“0”即可通过for(j=0;j<20;j++)mg[0][j]=mg[19][j]=1;/*设置迷宫外围“不可走”,保证只有一个出口和入口*/for(i=2;i<19;i++)mg[i][0]=mg[i-1][19]=1;/*设置迷宫外围“不可走”,保证只有一个出口和入口*/for(i=1;i<19;i++)for(j=1;j<19;j++){k=rand()%3;//随机生成0、1、2三个数if(k)mg[i][j]=0;else{if((i==1&&j==1)

4、

5、(i==18&&j==18))/*因

6、为距入口或出口一步的路是必经之路,故设该通道块为“0”加大迷宫能通行的概率*/mg[i][j]=0;elsemg[i][j]=1;}}}//构造一个空栈StatusInitStack(SqStack&s){s.base=(SElemType*)malloc(stack_init_size*sizeof(SElemType));if(!s.base)returnOVERFLOW;s.top=s.base;s.stacksize=stack_init_size;returnOK;}//当前块可否通过StatusPas

7、s(PosTypee){if(mg[e.x][e.y]==0)//0时可以通过returnOK;//如果当前位置是可以通过,返回1returnOVERFLOW;//其它情况返回0}//留下通过的足迹StatusFootPrint(PosTypee){mg[e.x][e.y]=7;returnOK;}//出栈StatusPop(SqStack&s,SElemType&e){if(s.top==s.base)returnERROE;e=*--s.top;returnOK;}//压入栈StatusPush(SqStac

8、k&s,SElemTypee){if(s.top-s.base>=s.stacksize){s.base=(SElemType*)realloc(s.base,(s.stacksize+stack_increment)*sizeof(SElemType));if(!s.base)exit(OVERFLOW);s.top=s.base+s.stacksize;s.stacksize+=stack_increment;}*s.top++=e;returnOK;}//是否空栈StatusStackEmpty(SqSta

9、cks){if(s.top==s.base)returnOK;returnOVERFLOW;}//留下不能通过的足迹StatusMarkPrint(PosTypee){mg[e.x][e.y]=3;returnOK;}//下一步PosTypeNextPos(PosType&e,intdir){PosTypeE;switch(dir){case1:E.x=e.x;//向下E.y=e.y+1;break;case2:E.x=e.x+1;//向右E.y=e.y;break;case3:E.x=e.x;//向上E.y=e

10、.y-1;break;case4:E.x=e.x-1;//向左E.y=e.y;break;}returnE;}//若迷宫maze中从入口start到出口end的通道,则求得一条存放在栈中//(从栈底到栈顶),并返回TRUE;否则返回FALSE/迷宫函数StatusMazePath(intmg,PosTypestart,PosTypeend,SqStack&s){PosTy

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。