您的位置:首页 > 理论基础 > 数据结构算法

学习笔记------数据结构(C语言版)栈应用 迷宫寻路

2016-02-03 18:02 543 查看
Status MazePath(MazeType maze[]
,PosType start,PosType end)
//若迷宫maze中存在从入口start到出口end的通道,则求得一条存放在栈中
//(从栈底到栈顶),并返回TRUE;否则返回FALSE。
{
SqStack S;
PosType curpos;
int curstep;
SElemType e;
InitStack(&S);
curpos=start;
curstep=1;
do
{
if(Pass(curpos,maze))
{
FootPrint(curpos,maze);
ShowMaze(maze);
SetSElemType(&e,curstep,curpos,East);
Push(&S,e);
if(EqualPosType(curpos,end))
{
printf("寻路成功!!!\n");
return TRUE;
}
curpos=NextPos(curpos,4);
curstep++;
}
else
{
if(!StackEmpty(S))
{
Pop(&S,&e);
while(e.di==North&&!StackEmpty(S))
{
MarkPrint(e.seat,maze);
ShowMaze(maze);
Pop(&S,&e);
}
if(e.di<North)
{
maze[e.seat.x][e.seat.y]=++e.di;
ShowMaze(maze);
Push(&S,e);
curpos=NextPos(e.seat,e.di);
}
}
}
}while(!StackEmpty(S));
printf("寻路失败!!!\n");
return FALSE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息