C语言一个程序,帮忙看看有什么问题。

来源:百度知道 编辑:UC知道 时间:2024/06/21 00:30:39
void Dijkstra(GraphtYPE G, int v0, PathMatrix * p,WeightType D[])
{
for(v=0;v,G.vexnum;++v)
{
fianl[v]=0;D[v]=G.arcs[v0][v];
for(w=0;w,G.vexnum;++w)p[v][w]=0;
if(D[v],INFINITY)
p[V0][V]=1;
}
D[v0]=0;final[v0]=1;
for(i=1,I<g.vexnum;++i)
{
min=INFINITY;
for(w=0;w<G.vexnum;++w)
if(!final[w])
if(D[w]<min){v=w;min=D[w];}
final[v]=1
for(w=0;w<G.vexnum;++w)
if(!final[w]&&(min+G.arcs[v][w]<D[w]))
{D[w]=min+G.arcs[v][w];
P[w]=P[v];P[w][v]=1;
}
}
}

同学,首先,这不是个程序,这只是个算法,应该是求最短路径的算法。所以,是不可能运行出来的。你的那个图不仅没有定义 而且还没有初始化。如WeightType等都是些抽象类型。我看你的问题觉得你应该学C不久,建议你还是从基本学起

太长没怎么看。不过觉得你的for循环很怪,为什么都是先增值。比如for(i=1,I<g.vexnum;++i) 为什么不写成for(i=1,I<g.vexnum;i++)呢 !这样写我觉得不妥。

虽然你的for循环有点怪,但是没有错;并不像1楼说的,其实这2种效果是一样。
你写的实在是乱,看得有点晕晕的也没看出什么。