编程实现dijkstra算法c语言,dijkstra算法的c语言实现.docx

该博客介绍了如何用C语言实现Dijkstra算法,用于找到图中两点间的最短路径。代码展示了从源节点1开始计算到其他所有节点的最短路径,并输出路径详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

dijkstra算法的C语言实现

#include "stdafx.h"

#include "stdio.h"

#include

#define N 6

#defineMAX9999

void Path(int *p,int v,int i)

{

int que[N];

int t=v;

que[t++]=i;

int tmp=p[i];

while(tmp!=v)

{

que[t]=tmp;

t++;

tmp=p[tmp];

}

que[t]=v;

for(int k=t;k>=1;--k)

if(k!=1)

printf("%d-->",que[k]);

else

{ printf("%d",que[k]);

printf("\n");

}

}

int main()

{

int cost[N][N]={

{MAX,MAX,MAX,MAX,MAX,MAX},

{MAX,MAX,10,MAX,30,100},

{MAX,MAX,MAX,50,MAX,MAX},

{MAX,MAX,MAX,MAX,MAX,10},

{MAX,MAX,MAX,20,MAX,60},

{MAX,MAX,MAX,MAX,MAX,MAX}

};

int S[N];

int dist[N];

int p[N];

int i,j,u,min;

for(i=1;i

{

S[i]=0;

dist[i]=cost[1][i];

if(dist[i]==MAX)

p[i]=0;

else p[i]=1;

}

S[1]=1;

for(i=2;i

{

min=MAX;

for(j=1;j

{

if(!S[j]&&dist[j]

{

u=j;

min=dist[j];

}

}

S[u]=1;

for(j=1;j

if(!S[j]&&min+cost[u][j]

{

dist[j]= min+cost[u][j];

p[j]=u;

}

}

for(i=2;i

{

printf("the shortest line 1--->%d:%d",i,dist[i]);

printf("顶点遍历:");

Path(p,1,i);

}

system("pause");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值