迪杰斯特拉算法从小到大的求出了从源点到其余各个点的最短路径,用到了邻接矩阵的储存结构。
代码如下:
#include<stdio.h>
#define MAX_VERTEX_NUM 100
#define INFINITY 2000000000
typedef struct {
int vexs[MAX_VERTEX_NUM];
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int vexnum,arcnum;
}MGraph;
int LocateVex(MGraph G,int v){
for(int i=0;i<G.vexnum;i++){
if(G.vexs[i]==v)return i;
}
}
void CreateUDN(MGraph &G){
int i,j,k;
printf("输入顶点个数和弧的个数:\n");
scanf("%d%d",&G.vexnum,&G.arcnum);//输入顶点个数,弧额条数,以及是否有关于弧的相关信息
printf("输入各个顶点的名称(数字):\n");
for(i=0;i<G.vexnum;i++)
scanf("%d",&G.vexs[i]);//输入各个顶点,这里顶点的数据类型默认为int类型
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
if(i==j)G.arcs[i][j]=0;//顶点自身到自身的权值为0
else G.arc