欢迎来到天天文库
浏览记录
ID:13779372
大小:38.00 KB
页数:6页
时间:2018-07-24
《数据结构迷宫问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、//base.h//-------------------公用的常量和类型----------------------------#include#include#include#include//函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE
2、 -1#defineOVERFLOW -2 typedefint Status; //函数的返回值typedefintDirectiveType; //下一个通道方向#defineRANGE 100 //迷宫大小//~2。//stack.h#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT 10//------------ 栈的顺序存储实现 -----
3、-------------------------typedefstruct...{ introw; intcol;}PosType;typedefstruct...{ int step; //当前位置在路径上的"序号" PosType seat; //当前的坐标位置 DirectiveType di; //往下一个坐标位置的方向}SElemType;typedefstruct...{
4、 SElemType*base; SElemType*top; intstacksize;}SqStack;//-----------------栈的基本操作的算法实现--------------------------------StatusInitStack(SqStack&s)...{ s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!s.base)exit(OVERFLOW);
5、 s.top=s.base; s.stacksize=STACK_INIT_SIZE; returnOK;}StatusGetTop(SqStacks,SElemType&e)...{ if(s.top==s.base)returnERROR; e=*(s.top-1); returnOK;}StatusPush(SqStack&s,SElemTypee)...{ if(s.top-s.base>=s.stacksize)...{ //栈满,追加存储空
6、间 s.base=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!s.base)exit(OVERFLOW);s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } *s.top++=e; returnOK;}StatusPop(SqStack&s,SElemType&e
7、)...{ if(s.top==s.base)returnERROR; e=*--s.top; returnOK;}intStackEmpty(SqStacks)...{ returns.base==s.top;}StatusClearStack(SqStack&s)...{ s.top=s.base; returnOK;}//~3。//maze.h//--------------------迷宫程序-------------------------------
8、---/**//************************************************************** 迷宫问题算法: 从入口出发,顺着某一个方向进行探索,若能走通,则继续前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路,假如所有可能的通路都探索到而未能达到出口,则所设定的迷宫没有通路. 说明:可通:未增走到过的通道快. *******************************************
此文档下载收益归作者所有