数据结构迷宫求解,运行几步之后就停止运行了,找了好久的错误了,找不到,我真的花了很久的时间去运行但是找不到问题在哪,请各位帮帮忙,感激不尽
#include<stdio.h>#include<stdlib.h>
#define n1 10
#define n2 10
typedef struct Zhan{
int i;
int j;
struct Zhan*next;
}*zhan,lnode;
typedef struct zu{
int a[n1][n2];//标识是否是通路,若是为0,否为1
int h[n1][n2];//标识是否已访问,若已访问,则为1,否为0
}mase;
void push(zhan &s,zhan &top)
{
top=s;
s=(zhan)malloc(sizeof(lnode));
s->next=top;
}
void main()
{
zhan top,base,s,q;
mase R;
int b,c,e,f,i,j;
printf("请输入迷宫的数据\n");
for(i=0;i<n1;i++)
for(j=0;j<n2;j++)
scanf("%d",&R.a[i][j]);
base=top=s=(zhan)malloc(sizeof(lnode));
printf("请输入入口和出口的坐标:\n");
scanf("%d%d%d%d",&b,&c,&e,&f);
R.h[b][c]=0;
do
{
if(R.a[b][c]==0&&R.h[b][c]!=1)
{
s->i=b;s->j=c;
R.h[b][c]=1;push(s,top);
}
if(R.a[b][c+1]==0&&R.h[b][c+1]!=1)
{
c=c+1;
s->i=b;s->j=c;push(s,top);
R.h[b][c]=1;
}
else if(R.a[b+1][c]==0&&R.h[b+1][c]!=1)
{
b=b+1;
s->i=b;s->j=c;push(s,top);
R.h[b][c]=1;}
else if(R.a[b][c-1]==0&&R.h[b][c-1]!=1)
{
c=c-1;
s->i=b;s->j=c;push(s,top);
R.h[b][c]=1;
}
else if(R.a[b-1][c]==0&&R.h[b-1][c]!=1)
{
b=b-1;
s->i=b;top->j=c;push(s,top);
R.h[b][c]=1;
}
else
{
q=top;
s->next=q->next;
free(q);
top=s->next;
b=top->i;c=top->j;
}
}while(base&&top->i!=e||top->j!=f);base->next =NULL;
if(base=NULL)
printf("erro\n");
else
{
printf("路径为:\n");
while(top)
{
printf(" <- (%d,%d)",top->i,top->j);
top=top->next;
}
}
printf("\n");
}
迷宫数据为:
1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 1 0 1
1 0 0 1 0 0 0 1 0 1
1 0 0 0 0 1 1 0 0 1
1 0 1 1 1 0 0 0 0 1
1 0 0 0 1 0 0 0 0 1
1 0 1 0 0 0 1 0 0 1
1 0 1 1 1 0 1 1 0 1
1 1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
入口*(1,1)出口*(8,8) sorry啊,我不会怎么把运行的图片传上来
[ 本帖最后由 迟珩 于 2014-6-22 10:09 编辑 ]