求大神帮看个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;
}
}
展开
 我来答
MachineO_o
2013-05-13
知道答主
回答量:24
采纳率:0%
帮助的人:19.2万
展开全部
楼主都不说你想问什么额!
就算看得懂别人怎么回答你呢?
追问
额,,编译没错,没法运行,,
追答
应该是内存分配问题!
initstack();
这一句应该在
*s.top=11;*s.base=11;
之前,初始化分配存储空间
这个改了后
还有个数组的赋值也出错,还没研究
你自己也看看,
我也不是很专业
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式