#include"type.h" //Dijkstra算法 void Ppath(MatGrath &G,int path[],int w,int v) //前向递归查找路径上的顶点 { int k; k=path[w]; if (k==v) return; //找到了起点则返回 Ppath(G,path,k,v); //找顶点k的前一个顶点 printf("%s->",G.vexs[k].sight); //输出顶点k } void ShortestPath(MatGrath &G,int v,int w)//求两点之间的最短路径 { int dist[MAXV],path[MAXV]; int s[MAXV]; int mindis,i,j,u; for (i=0; i",G.vexs[v].sight); //输出路径上的起点 Ppath(G,path,w,v); //输出路径上的中间点 printf("%s\n",G.vexs[w].sight); //输出路径上的终点 } if(s[w]==0) printf("从%d到%d不存在路径\n",v,w); } /*********************** 功能:用Dijkstra算法求给出的一点到其余个点的最短路径 输入:源点 输出:地点的最短路程以及路径 ***********************/