你好,请问您能不能给我一份可以实现的迪杰斯特拉算法的C语言代码,我想求最短路径。谢谢

网上找的错误太多,自己又是个菜鸟,根本改不出来。麻烦你了... 网上找的错误太多,自己又是个菜鸟,根本改不出来。麻烦你了 展开
 我来答
百度网友0199eae7a
2013-03-20
知道答主
回答量:19
采纳率:0%
帮助的人:15.6万
展开全部
void Dijkstra(MGraph g,int v)
{
int dist[MAXV],path[MAXV];
int s[MAXV];
int mindis,i,j,u;
for (i=0;i<g.n;i++)
{
dist[i]=g.edges[v][i]; /*距离初始化*/
s[i]=0; /*s[]置空*/
if (g.edges[v][i]<INF) /*路径初始化*/
path[i]=v;
else
path[i]=-1;
}
s[v]=1;path[v]=0; /*源点编号v放入s中*/
for (i=0;i<g.n;i++) /*循环直到所有顶点的最短路径都求出*/
{
mindis=INF; /*mindis置最小长度初值*/
for (j=0;j<g.n;j++) /*选取不在s中且具有最小距离的顶点u*/
if (s[j]==0 && dist[j]<mindis)
{
u=j;
mindis=dist[j];
}
s[u]=1; /*顶点u加入s中*/
for (j=0;j<g.n;j++) /*修改不在s中的顶点的距离*/
if (s[j]==0)
if (g.edges[u][j]<INF && dist[u]+g.edges[u][j]<dist[j])
{
dist[j]=dist[u]+g.edges[u][j];
path[j]=u;
}
}
Dispath(dist,path,s,g.n,v); /*输出最短路径*/
}

试一下看能用不能、、、、、、
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式