利用栈实现迷宫问题,1、输入迷宫的大小m行n列,两者为整数。2、由随机数产生0或1,建立迷宫。3、输出数据。4、首先输出迷宫,在打印由入口到出口的入线。如无通道,则打印出无。
#include <stdlib.h>
#include<time.h>
#include <stdio.h>
#include<windows.h>
#define MaxSize 100
#define row 6
#define rank 6
typedef struct
{
int i;//当前方块的行号
int j;//当前方块的列号
int di;//下一个可走的相邻方块的方位号(0右,1下,2左,3上)
}Box;
typedef struct
{
Box data[MaxSize];
int top;//栈顶指针
}StType; //定义顺序栈类型
void map(int xi,int yi,int a[row][rank])//随机产生地图
{
// a.输入迷宫的大小row行和rank列,两者为整数
//b.由随机数产生0或1,建立迷宫。
int m,n;
srand(time(0));
for(m=0;m<row;m++)//生成墙壁
{
for(n=0;n<rank;n++)
{
if(m==0||n==0||m==row-1||n==rank-1)
a[m][n]=1;
else
a[m][n]=0;
}
}
for(m=1;m<row-1;m++)
{
for(n=1;n<rank-1;n++)
{
a[m][n]=(int)rand()%2+0;
}
}
a[xi][yi]=0;//防止入口是1情况下也入栈
a[row-2][rank-2]=0;//防止出口是1情况下也入栈
printf("迷宫中元素 :\n");
for(m=0;m<row;m++)
{
for(n=0;n<rank;n