采用邻接矩阵表示图,5点有权图如下:
参考书目《数据结构与算法分析(C语言描述)》
1.Dijkstra算法,用于解决单源最短有权路径问题,它和无权最短路径算法一样,按阶段进行。在每个阶段,选择一个顶点v,它在所有未知顶点中具有最小的d,同时算法声明,从s到v的最短路径是已知的。同时对于下个顶点(队列结构储存),需要不断更新最短距离信息,而路径的保存则用不相交ADT来保存路径信息(路径求并)。
//main函数入口
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 20
#define INFINITY 65535
typedef char VertexType;
typedef struct Graph //邻接矩阵表示法
{
VertexType ver[MAXSIZE+1];
int edge[MAXSIZE][MAXSIZE];
}Graph;
void CreateGraph(Graph *g)
{
int i=0;
int j=0;
int VertexNum;
VertexType Ver;
printf("please input the vertex of graph:\n");
while('\n'!=(Ver=getchar()))
g->ver[i++]=Ver;
g->ver[i]='\0';
VertexNum=strlen(g->ver);
printf("input ad