int dejie(ALGraph G,int i,int j)
{
ArcNode *p;
int v,x,m,start,k,w,y,o;
int D[8],M[8];
p=(ArcNode*)malloc(sizeof(ArcNode));
for(v=0;v<8;v++)
D[v]=10000;
for(x=0;x<8;x++)
M[x]=0;
start=i;
M[0]=1;
k=G.vertices[i].firstarc->lang;
D[G.vertices[i].firstarc->adjvex]=k;
p=G.vertices[i].firstarc;
M[G.vertices[i].firstarc->adjvex]=1;
for(o=NextAdjVex(G,aaa(i),aaa(G.vertices[i].firstarc->adjvex));o;o=NextAdjVex(G,aaa(i),aaa(o)))
{
p=p->nextarc;
D[o]=p->lang;
M[o]=1;
}
//for(m=1;m<7;m++)
for(w=0;w<7;w++)//===================
{
if(D[w]<10000&&M[w]==0)
{
start=w;
k=G.vertices[start].firstarc->lang;
D[G.vertices[start].firstarc->adjvex]=D[start]+k;
p=G.vertices[start].firstarc;
M[G.vertices[start].firstarc->adjvex]=1;
for(y=NextAdjVex(G,aaa(start),aaa(G.vertices[start].firstarc->adjvex));y;y=NextAdjVex(G,aaa(start),aaa(y)))
{
p=p->nextarc;
D[y]=p->lang;
M[y]=1;
}
}
}
return 1;
}
在for(w=0;w
调试时w显示的是4199049地址,而不是0这是为什么,而且return 1失效;但把
for(o=NextAdjVex(G,aaa(i),aaa(G.vertices[i].firstarc->adjvex));o;o=NextAdjVex(G,aaa(i),aaa(o)))
{
p=p->nextarc;
D[o]=p->lang;
M[o]=1;
}
这行代码去掉ruturn 1就有显示了