结构定义(C++)
typedef struct {
int adj;
}ArcCell;
typedef struct {
int number;
string sight;
}VertexType;
typedef struct{
VertexType vex[NUM];
ArcCell arcs[NUM][NUM];
int vexnum,arcnum;
}MGraph;
const int INFINITY = 9999999;
typedef int Status ;
typedef int SElemType ;
代码(C++)
void ShortestPath_Dijkstra(MGraph G,int v0,int P[],int D[]){
bool S[10];
for (int i = 0; i < G.vexnum; ++i) {
S[i]= false; D[i]=G.arcs[v0][i].adj;P[i]= -1;
if (D[i]<INFINITY) P[i]=v0;
}
D[v0]=0;
S[v0]=true;
int v;
for (int k = 1; k < G.vexnum; ++k) {
int minDist=INFINITY;
for (int i = 0; i < G.vexnum; ++i)
if(!S[i]&&D[i]<minDist){v=i; minDist=D[i];}
S[v]= true;
for (int j = 0; j <G.vexnum ; ++j)
if (!S[j]&&(minDist+G.arcs[v][j].adj<D[j])){D[j]=minDist+G.arcs[v][j].adj;P[j]=v;}
}
}