C语言数据结构迪杰斯特拉算法-求源节点到各个节点的最短路径长度

本文介绍了使用C语言实现迪杰斯特拉算法,该算法用于求解从源节点到图中其他所有节点的最短路径长度。通过定义path、d和s数组来辅助计算,并最终输出源节点到各个节点的最短路径长度。
摘要由CSDN通过智能技术生成

/*
*迪杰斯特拉算法
*求源节点到其他各个节点的最短路径长度
*定义一个path数组 用来保存上一次的路径节点
*定义一个d数组 用来保存源节点到各个节点的最小路径
*定义一个s数组 用来保存已经找到最小路径的下标 定义为bool型全局变量
*最后遍历并打印d数组
*/

#include<stdio.h>
#include<stdio.h>
#include<string.h>
#define VERTEXNUM 100//顶点数
#define NAME_SIZE 255//字符串的最大长度
#define MAX_INT 32762//权值最大值
#define OK 1
#define ERROR 0
typedef  int Statu;//自定义状态数据类型
typedef  char* VertexType;//顶点值数据类型
typedef int ArcType;//权值的数据类型
typedef struct amgraph
{
    VertexType vex[VERTEXNUM];//顶点数组
    ArcType Arcs[VERTEXNUM][VERTEXNUM];//权值的二维数组
    int n;//图的顶点数
    int e;//图的边数
}AMGraph;//有向网的数据结构
int path[VERTEXNUM];//记录上一步节点
int D[VERTEXNUM];//记录源节点到每一个顶点的最短路径
int s[VERTEXNUM]={0};//用于记录该节点是否已经求得最短路径长度
Statu create_DN(AMGraph*G);//创建有向网
int Locate_vex(AMGraph*G,VertexType vex);//定位函数
void  test();//测试函数
void  shorttestpath_DIJ(AMGraph*G,int n);//迪杰斯特拉算法
void main()
{
      test();//测试函数
}
Statu create_DN(AMGraph*G)//创建有向网
{
    int i,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值