
求大神帮看个c语言程序,这个程序是数据结构里的迷宫问题,就是找到从入口到出口的一条路径。多谢了 30
#include<stdio.h>#include<malloc.h>#defineSIZE300structstack{int*base;int*top;}s;void...
#include<stdio.h>
#include<malloc.h>
#define SIZE 300
struct stack
{
int *base;
int *top;
}s;
void initstack()
{
s.base=(int*)malloc(SIZE*sizeof(int));
s.top=s.base;
}
void main()
{
int a[10][10]={{3,3,3,3,3,3,3,3,3,3},//3代表不可通过的地方或者边界,1代表可以通过
{3,1,1,3,1,1,1,3,1,3},
{3,1,1,3,1,1,1,3,1,3},
{3,1,1,1,1,3,3,1,1,3},
{3,1,3,3,3,1,1,1,1,3},
{3,1,1,1,3,1,1,1,1,3},
{3,1,3,1,1,1,3,1,1,3},
{3,1,3,3,3,1,3,3,1,3},
{3,3,1,1,1,1,1,1,1,3},
{3,3,3,3,3,3,3,3,3,3}};
*s.top=11;*s.base=11;
int m=1,n=1,e;
initstack();
a[1][1]=0;
while(m!=8&&n!=8)
{
if(a[m][n+1]==1)
{
n=n+1;
*s.top++=10*m+n;
a[m][n]=0;
}
else if(a[m+1][n]==1)
{
m=m+1;
*s.top++=10*m+n;
a[m][n]=0;
}
else if(a[m][n-1]==1)
{
n=n-1;
*s.top++=10*m+n;
a[m][n]=0;
}
else if(a[m-1][n]==1)
{
m=m-1;
*s.top++=10*m+n;
a[m][n]=0;
}
else while(a[m][n+1]!=1&&a[m-1][n]!=1&&a[m][n-1]!=1&&a[m+1][n]!=1)
{
a[m][n]=2;
--s.top;
e=*(--s.top);
n=e%10;
m=e-n;
}
}
m=0,n=0;
while(m<10)
{
while(n<10)
{
printf("%d ",a[m][n]);
n++;
}
printf("\n");
m++;
n=0;
}
} 展开
#include<malloc.h>
#define SIZE 300
struct stack
{
int *base;
int *top;
}s;
void initstack()
{
s.base=(int*)malloc(SIZE*sizeof(int));
s.top=s.base;
}
void main()
{
int a[10][10]={{3,3,3,3,3,3,3,3,3,3},//3代表不可通过的地方或者边界,1代表可以通过
{3,1,1,3,1,1,1,3,1,3},
{3,1,1,3,1,1,1,3,1,3},
{3,1,1,1,1,3,3,1,1,3},
{3,1,3,3,3,1,1,1,1,3},
{3,1,1,1,3,1,1,1,1,3},
{3,1,3,1,1,1,3,1,1,3},
{3,1,3,3,3,1,3,3,1,3},
{3,3,1,1,1,1,1,1,1,3},
{3,3,3,3,3,3,3,3,3,3}};
*s.top=11;*s.base=11;
int m=1,n=1,e;
initstack();
a[1][1]=0;
while(m!=8&&n!=8)
{
if(a[m][n+1]==1)
{
n=n+1;
*s.top++=10*m+n;
a[m][n]=0;
}
else if(a[m+1][n]==1)
{
m=m+1;
*s.top++=10*m+n;
a[m][n]=0;
}
else if(a[m][n-1]==1)
{
n=n-1;
*s.top++=10*m+n;
a[m][n]=0;
}
else if(a[m-1][n]==1)
{
m=m-1;
*s.top++=10*m+n;
a[m][n]=0;
}
else while(a[m][n+1]!=1&&a[m-1][n]!=1&&a[m][n-1]!=1&&a[m+1][n]!=1)
{
a[m][n]=2;
--s.top;
e=*(--s.top);
n=e%10;
m=e-n;
}
}
m=0,n=0;
while(m<10)
{
while(n<10)
{
printf("%d ",a[m][n]);
n++;
}
printf("\n");
m++;
n=0;
}
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询