Floyd算法直接使用二维数组求出所有顶点到所有顶点的最短路径。
D代表顶点到顶点的最短路径权值和的矩阵。
P代表对应顶点的最小路径的前驱矩阵。
以下程序在DEV C++中调试运行通过。
#include <stdio.h>
#define INFINITY 65535
typedef int VertexType; //顶点是字符型
typedef int EdgeType; //边是整型
typedef struct //图的邻接矩阵存储结构
{
VertexType vexs[9]; //顶点向量
EdgeType edges[9][9]; //邻接矩阵
int vexnum,arcnum; //图中当前的顶点数和边数
}MGraph;
/* 邻接矩阵的建立*/
void CreateGraph(MGraph *G)
{
int i,j,k,weight;
int ch1,ch2;
printf("请输入顶点数和边数(输入格式为:顶点数,边数):");
scanf("%d,%d",&(G->vexnum),&(G->arcnum));
printf("请输入顶点名称(输入格式为:a,b,c...):");