}
}
printf(\,a[i][j]);
printf(\);
}//打印迷宫 return a;
struct node {
int val1; int val2; node *next;
};//针对迷宫的结构体类型储存横纵坐标 typedef struct node *STACK; void MakeNull(STACK &S) {
S = new node; S->next = NULL;
}//栈的初始化
void Push(int x,int y, STACK S) {
STACK stk; stk = new node; stk->val1 = x; stk->val2 = y; stk->next = S->next; S->next = stk;
}//压栈
void Pop(STACK S) {
STACK stk; if(S->next){ }
stk = S->next; S->next = stk->next; delete stk;
}//弹栈
int Top1(STACK S) {
if(S->next)
return(S->next->val1); return NULL; else
}//返回栈顶第一个元素 int Top2(STACK S)
{ }
int main(int argc, char* argv[]) {
int x, y, z; int i,j; int **w; float r; STACK Q, P; MakeNull(Q);
MakeNull(P);//两个栈的初始化 srand(time(NULL)); x=0;y=0;z=0;
printf(\); scanf_s(\,&x);
printf(\); scanf_s(\,&y); if(S->next)
return(S->next->val2); return NULL; else
printf(\); scanf_s(\,&r);
getchar();//用户输入迷宫的行数列数、通路障碍比例 w=maze(x,y,r); getchar();
int ii=1;int jj=1; while(ii!=x || jj!=y) {
if(w[ii-1][jj]*w[ii+1][jj]*w[ii][jj-1]*w[ii][jj+1]==0) {
z++;
if(0==w[ii+1][jj]) {
Push(ii,jj,Q);w[ii][jj]=2; ii++;
}//选择向下的方向 else if(0==w[ii][jj+1]) {
Push(ii,jj,Q);w[ii][jj]=2; jj++;
}//选择向右的方向 else if(0==w[ii][jj-1]) {
}
Push(ii,jj,Q);w[ii][jj]=2; jj--;
}//选择向左的方向 else {
<