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 =