Status MazePath(MazeType maze[][N],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;
}
学习笔记------数据结构(C语言版)栈应用 迷宫寻路
最新推荐文章于 2022-04-07 00:23:47 发布