Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。
头文件:Floyd.h
#ifndef FLOYD_H
#define FLOYD_H
#define INFINITY 65535
#define MAXVEX 20
#define MAXVEX 20
typedef int ShortPathTable[MAXVEX][MAXVEX];
typedef int ShortPosition[MAXVEX][MAXVEX];
typedef struct graph{
int Vertex[MAXVEX]; //顶点信息
int Edge[MAXVEX][MAXVEX]; //边表信息
int NumVertex,NumEdge; //图的顶点数,边数
}Graph;
void CreateGraph(Graph *G); //建立图
void ShortestPath_Floyd(Graph *G,ShortPosition *p,ShortPathTable *d); //费洛伊德算法
#endif //FLOYD_H
实现文件:Floyd.cpp
#include "Floyd.h"
#include <stdio.h>
void CreateGraph(Graph *G)
{
G->NumVertex = 9; //图的顶点数为9
G->NumEdge = 16; //图的边为16
for(int i = 0;i < G->NumVertex;++i) //初始化顶点信息
G->Vertex[i] = i;
for(int i = 0;i < G->NumVertex;++i) //初始化边表信息
for(int j = 0;j < G->NumVertex;++j)
{
if(i == j)

本文介绍了Floyd算法,一种用于解决加权图中最短路径问题的算法。通过Floyd算法,可以找到图中任意两个顶点之间的最短路径。算法包括头文件Floyd.h、实现文件Floyd.cpp以及用于测试的main.cpp文件。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



