參考:《大話資料結構》
這是乙個按照路徑長度遞增的次序產生最短路徑的演算法。它並不是一次求出源點到目標點的最短路徑,而是一步步求出它們之間頂點的最短路徑,過程中都是基於已經求出的最短路徑的基礎上,求得更遠頂點的最短路徑,最終得到想要的結果。
#define maxvex 9#define infinity typedef
intpathmatrix[maxvex]
typedef
intshortpathtable[maxvex]
void shortestpath_dijkstra(mgraph g, int v0, pathmatrix *p, shortpathtable *d)
(*d)[v0] = 0; //
v0至v0路徑為0
final[v0] = 1; //
v0至v0不需要求路徑
/*開始主迴圈,每次求得v0到某個v頂點的最短路徑
*/for(v=1;v)}}
final[k] = 1; //
將目前找到的最近的頂點置為1
for(w=0;w)
}
}
最短路徑 之Dijkstra演算法
dijkstra演算法dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for in...
最短路徑 之Dijkstra演算法
dijkstra演算法 dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for i...
最短路徑之Dijkstra演算法
using system namespace dijkstra演算法 路徑圖 static int places int math.sqrt map.length 獲取地點數 static int shortest new int places 存放從start到其他節點的最短路徑 static b...