最近做软设,地铁换乘管理系统,需要用到迪杰斯特拉算法。正好又复习了一遍,顺便把实现代码作为自己的第一篇博客。
#include<stdio.h>
#include<stdlib.h>
#define INF 1000000
#define MAX 100
typedef struct Graph{
int vexnum;//顶点个数
char vexs[MAX];//顶点集合
int matrix[MAX][MAX];//邻接矩阵
}graph;
void djistra(graph g,int pre[],int dist[],int vx){
// creatmartix(g);
//pre[x]是记录顶点vx到顶点x的最短路径上x的前一个节点
//dist[x]是记录点vx到点x的最短距离
int flag[g.vexnum];//某个点的flag为0,那么这个点还未被访问,若flag==1那么这个点已经被访问并加入到了最短路径之中。
//初始化数据
for(int i=0;i<g.vexnum;i++){
dist[i]=g.matrix[vx][i]