本文主要是介绍数据结构之---C语言实现最短路径之Dijkstra(迪杰斯特拉)算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
此处共有两段代码:
一、
这段代码比较全面,其中参考了github上的相关源码。可以说功能强大。
//Dijkstra(迪杰斯特拉算法)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX 100 // 矩阵最大容量
#define INF 65535 // 最大值65535
#define isLetter(a) ((((a)>='a')&&((a)<='z')) || (((a)>='A')&&((a)<='Z')))
#define LENGTH(a) (sizeof(a)/sizeof(a[0]))// 图的邻接矩阵存储
typedef struct _graph
{char vexs[MAX]; // 顶点集合int vexnum; // 顶点数int edgnum; // 边数int matrix[MAX][MAX]; // 邻接矩阵
}Graph, *PGraph;// 边的结构体
typedef struct _EdgeData
{char start; // 边的起点char end; // 边的终点int weight; // 边的权重
}EData;/** 返回ch在matrix矩阵中的位置*/
static int get_position(Graph G, char ch)
{int i;for(i=0; i<G.vexnum; i++)if(G.vexs[i]=&
这篇关于数据结构之---C语言实现最短路径之Dijkstra(迪杰斯特拉)算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!