資料結構實驗 最短路徑

2021-09-16 21:16:47 字數 1065 閱讀 9475

實驗內容:對於使用者隨機輸入的乙個有向帶權圖,求從某個頂點到其他各頂點的最短路徑。

#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中的值,每次...