1、实验内容:
利用狄克斯特拉(Dijkstra)算法求上图中0结点到其它结点的最短路径,算法实现代码必须有注释。
2、实现代码:
#include<iostream>
using namespace std;
#define MVNum 100 //最大顶点数
#define MaxInt 32767 //表示极大值,即∞
//利用狄克斯特拉(Dijkstra)算法求上图中0结点到其它结点的最短路径,算法实现代码必须有注释。
int *D = new int[MVNum]; //用于记录最短路的长度
bool *S = new bool[MVNum]; //标记顶点是否进入S集合
int *Path = new int[MVNum]; //用于记录最短路顶点的前驱int *D=new int[MVNum]; //用于记录最短路的长度
//图的邻接矩阵
typedef struct
{
char vexs[MVNum]; //顶点表
int arcs[MVNum][MVNum]; //邻接矩阵
}Graph;
void InitGraph(Graph &G, int vex)
{
cout << "输入点的名称,如a" << endl;
for (int i = 0; i < vex; ++i) {
cout << "请输入第" << (i + 1) << "个点的名称:";
cin >> G.vexs[i]; //依次输入点的信息
}
cout << endl;
for (int i = 0; i < vex; ++i) //初始化邻接矩阵,边的权值均置为极大值MaxInt
for (int j = 0<