C语言数据结构弗洛伊德算法-求两点之间最短路径长度

/*
*求有向网中的任意两点的最短路径
*弗洛伊德算法的核心是 运用一个path二维数组 和一个A二维数组
*path数组用来保存中间路径经过的节点
*A数组用来保存任意两个顶点之间的最短路径长度
*最后输出A数组运用了递归输出的思想
*先初始化path数组和A数组
*运用三层循环 (算法的核心) 计算任意两点之间的最短路径长度 将经过的节点的下标存储在path数组中去
*递增的思想
*创建一个有向网 输出一个临接矩阵
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define  OK 1
#define ERROR 0
#define   VERTEXNUM 100//最大顶点数
#define  NAME_SIZE 255//字符串的最大长度
#define MAX_INT 32726 //权重最大值
typedef int Statu;//返回值的数据类型
typedef  char*VertexType;//字符串的数据类型
typedef int ArcType;//权值数组的数据类型
typedef struct  amgraph
{
    VertexType vexs[VERTEXNUM];//图的顶点数组
    ArcType arcs[VERTEXNUM][VERTEXNUM];//图的权值的二维数组
    int n;//图的顶点数
    int e;//图的边数
}AMGraph;//图的结构体
int  path[VERTEXNUM][VERTEXNUM];//用于保存进过的中间路径的节点的下标
int A[VERTEXNUM][VERTEXNUM];//经过的路径节点的权值
void main()
{
    test();//测试函数

}
void test();//测试函数
Statu create_DN(AMGraph*G);//创建有向网
int Locate_vex(AMGraph*G,VertexType vex);//定位函
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值