v1.0 可编辑可修改
{// 当前位置不能通过 }
if(!StackEmpty(S)) { }
Pop(&S,&e); // 退栈到前一位置 curstep--;
while==3&&!StackEmpty(S)) // 前一位置处于最后一个方向(北) { }
if<3) // 没到最后一个方向(北) { }
++; // 换下一个方向探索
Push(&S,e); curstep++;// 设定当前位置是该新方向上的相邻块 curpos=NextPos,;
MarkPrint; // 留下不能通过的标记(-1) Pop(&S,&e); // 退回一步 curstep--;
}while(!StackEmpty(S)); return 0; }
// 输出迷宫的结构 void Print(int x,int y) {
int i,j;
11
for(i=0;i printf(\ printf(\ } } void main() { PosType begin,end; int i,j,x,y,x1,y1,n,k; do{ system(\ 清屏函数 printf(\ 物 联 网 1 班 --*************************\\n\\n\\n\ printf(\请输入迷宫的行数,列数\\n\ printf(\请输入迷宫内墙单元数\\n\ printf(\迷宫结构如下\\n\ printf(\输入迷宫的起点和终点\\n\ printf(\输出结果\\n\ printf(\退出\\n\ printf(\请选择 \ scanf(\ switch(n) 12 v1.0 可编辑可修改 刘 沛 航 v1.0 可编辑可修改 { case 1:{ printf(\请输入迷宫的行数,列数(包括外墙):(空格隔开)\ scanf(\ for(i=0;i for(j=1;j m[j][0]=0; // 迷宫左边列的周边即左边墙 m[j][y-1]=0;// 迷宫右边列的周边即右边墙 { m[0][i]=0; // 迷宫上面行的周边即上边墙 m[x-1][i]=0;// 迷宫下面行的周边即下边墙 } } for(i=1;i for(j=1;j m[i][j]=1; // 定义通道初值为1 }break; case 2: {printf(\请输入迷宫内墙单元数:\ scanf(\ printf(\请依次输入迷宫内墙每个单元的行数,列数:(空格隔开)\\n\ for(i=1;i<=j;i++) { 13 v1.0 可编辑可修改 } scanf(\ m[x1][y1]=0; }break; case 3:{ Print(x,y);printf(\刘沛航建立的迷宫,定义墙元素值为0,可通过路 径为1,输入0退出\ case 4:{ printf(\请输入起点的行数,列数:(空格隔开)\ scanf(\ printf(\请输入终点的行数,列数:(空格隔开)\ scanf(\ case 5:{ if(MazePath(begin,end)) // 求得一条通路 { } else printf(\此迷宫没有从入口到出口的路径,谢谢使用刘沛航的程序\\n\ printf(\此迷宫从入口到出口的一条路径如下,谢谢使用刘沛航的程序:\\n\ Print(x,y); // 输出此通路 printf(\输入0退出\ }break; } }while(n!=0);} 14