實驗內容:對於使用者隨機輸入的乙個有向帶權圖,求從某個頂點到其他各頂點的最短路徑。
#include#define maxv 20
#define inf 32 //若不存在,則設的權為32,表示無窮大
typedef struct
vertextype; /*頂點型別*/
typedef struct
matgraph; /*完整的圖鄰接矩陣型別*/
void dispath(matgraph g,int dist,int path,int s,int v)
}}void dijkstra(matgraph g,int v)
s[v]=1;path[v]=0; //源點編號v放入s中
for(i=0;is[u]=1; //頂點u加入s中
for(j=0;jif(s[j]==0)
if(g.edges[u][j]}
dispath(g,dist,path,s,v); //輸出最短路徑
}void main()
printf("請輸入源點v的編號:");
scanf("%d",&v);
dijkstra(g,v);
}
請輸入圖g的頂點數和邊數(用逗號分隔):5,8
請輸入圖g的頂點編號(用空格分隔):0 1 2 3 4
請分行輸入圖g的鄰接矩陣(同一行的元素用空格分隔,每輸入完一行按回車結束):
0 1 0 1 1
1 0 1 1 0
0 1 0 1 1
1 1 1 0 1
1 0 1 1 0
請輸入源點v的編號:0
從頂點0到頂點1的路徑長度為:1 路徑為:0,1
從頂點0到頂點2的路徑長度為:0 路徑為:0,2
從頂點0到頂點3的路徑長度為:1 路徑為:0,3
從頂點0到頂點4的路徑長度為:1 路徑為:0,4
資料結構最短路徑例題 資料結構實驗報告 最短路徑
實驗六最短路徑 一 實驗目的 1.學習掌握圖的儲存結構 2.學會編寫求最短路徑的演算法 二 實驗內容 1 實驗題目 編寫 實現dijkstra生成最短路徑的演算法,其中要有完整的圖的輸入輸出 2 簡單介紹 圖的儲存 用鄰接矩陣,這樣會方便不少。鄰接矩陣是乙個二維陣列,陣列中的元素是邊的權 一些數值 ...
資料結構 最短路徑 Dijkstra
include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...
資料結構 最短路徑問題
求解這個問題的時候我們用到dijkstra演算法,演算法的描述如下 1 首先定義乙個陣列用來儲存從源點到每乙個頂點的最短路徑 不可達用無窮表示 使用s集合來儲存已經求得最短路徑的頂點,那麼剩餘頂點就存放在集合t中 2 第一次迭代的時候s只有源點,然後根據s集合中的頂點來更新最短路徑陣列d中的值,每次...