- 3
- 0
- 约 6页
- 2016-10-17 发布于贵州
- 举报
数据结构-迷宫解算法
#include stdio.h
#include stdlib.h
#define overflow -1
#define ok 1
#define error 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int Status;
typedef struct
{
int x;
int y;
}PosType;//位置类型
typedef struct
{
int row,col;
int a[50][50];
}MazeType;//迷宫类型
typedef struct
{
int ord;//通道块在路径上的序号
PosType seat;//通道块在迷宫中的“坐标位置”
int di;//从此通道块走向下一个通道块的方向
}SElemType;//栈的元素类型
typedef struct
{
SElemType *base;
SElemType *top;
int Stacksize;
}SqStack;//栈结构
Status InitStack(SqStack S)//初始化栈
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base) exit (overflow);
S.top=S.base;
S.Stacksize=STACK_INIT_SIZE;
return ok;
}
Status Push(SqStack S,SElemType e)//入栈
{
if(S.top-S.base=S.Stacksize)
{
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;
return ok;
}
Status Pop(SqStack S,SElemType e)//出栈
{
if(S.top==S.base) return error;
e=*--S.top;
return ok;
}
bool StackEmpty(SqStack S)//判断栈是否为空
{
if(S.top==S.base)
return ok;
else return error;
}
Status InitMaze(MazeType maze)//初始化迷宫
{
int i,j;
for( j=0;jmaze.col+2;j++)
maze.a[0][j]=1;
for( i=1;imaze.row+1;i++)
{
maze.a[i][0]=1;
maze.a[i][maze.col+1]=1;
for(int j=1;jmaze.col+1;j++)
scanf(%d,maze.a[i][j]);
}
for(j=0;jmaze.col+2;j++)
maze.a[maze.row+1][j]=1;
return ok;
}//为了避免检查边界,把迷宫的外围都设成障碍,迷宫的内核是row行,col列的数组
bool Pass(MazeType maze,PosType curpos)//判断是否可以通过
{
return maze.a[curpos.x][curpos.y]==0;
}
Status FootPrint(MazeType maze,PosType curpos)//留下足迹
{
maze.a[curpos.x][curpos.y]=2;
return ok;
}
SElemType CreatElem(int step,PosType pos,int di)//创造一个SElemType型的数据
{
SElemType e;
e.ord=step;
e.seat=pos;
e.di=di;
return e;
}
bool IsEnd(PosType pos1,PosType pos2)//判断是否结束
{
return pos1.x==pos2.xpos1.y==pos2.y;
}
PosType NextPos(PosType curpos,int
您可能关注的文档
- 教师资格考试:中学教育知识与能力》模拟试题及答案.doc
- 教案公路施工组概论第1次(一章).doc
- 教育学09、《育学》有关理论、代表人物及著作等.doc
- 教育学、教育心学考试大纲.doc
- 教育技术的几个要定义.docx
- 教育法学考前答——典型案例演练(参考答案).doc
- 教育法学复习资整理版.doc
- 教育经济学(书上勾的内容).doc
- 数字印前-色彩颜色校正.doc
- 数字化油田概论1].doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)