資料結構課程設計 兩頂點之間最短路徑

2021-08-03 01:29:03 字數 1080 閱讀 2632

問題描述:資料結構上機實驗報告題5:

設計並實現乙個交通資訊系統。能夠讓旅客諮詢從任何乙個城市頂點到另乙個城市頂點之間的最短路徑問題。

要求:能夠輸出旅客所走路徑

解題思想:

使用弗洛伊德演算法依次遍歷圖中每個頂點,考量將其加入到圖中任意兩個頂點之間是否會使該兩個頂點之間的路徑(當前)剪短,若是,則在path[i][j]中記錄下該頂點。依次迭代就可以得到圖中任意兩頂點之間的最短路徑

難點:難點在於怎樣理解該演算法只在兩頂點之間插如乙個頂點但實現了長路徑的求解,以及用於儲存路徑頂點和往前遞迴尋找路徑頂點的過程

**:

/*

問題描述:資料結構上機實驗報告題5:

設計並實現乙個交通資訊系統。能夠讓旅客諮詢從任何乙個城市頂點到另乙個城市頂點之間的最短路徑問題。

要求:能夠輸出旅客所走路徑

*/#include #define inf 32767 //inf表示∞

int a,b;//起點和終點

int path[7][7];//用於存放路徑

int a[7][7]=//每個城市到另乙個城市的路徑,-1表示該城市到另一城市沒有直接路徑或者到自身,,

,,,,

};void ppath(int i,int j) //前向遞迴查詢路徑上的頂點

void floyd()

}}int main()

}printf("請輸入起點和終點:\n");

scanf("%d %d",&a,&b);

floyd();

printf("從城市%d到城市%d的路徑長度:%d 路徑為:",a,b,a[a][b]);

printf("%d,",a); //輸出路徑上的起點

ppath(a,b); //輸出路徑上的中間點

printf("%d\n",b); //輸出路徑上的終點

return 0;

}

程式執行結果展示:

知識點總結:弗洛伊德演算法及圖的鄰接矩陣

學習心得:開始怎麼讀都讀不懂,後來還是老老實實在紙上寫寫,仔細想了想迭代的過程和具體實現長路徑距離的尋找過程,才明白這個演算法是怎麼回事

資料結構課程設計

資料結構課程設計 include define n 30 include include includeusing namespace std struct node typedef node phone,mingzi node hashnumble node hashname int hash1 ...

資料結構課程設計

小明是乙個計算機專業top student 祝賀他畢業了。並準備到銀行參加工作。上班第一天,經理叫他編制乙個實現乙個活期儲蓄處理程式,算作考查。上班第一天,一定要給領導乙個好印象,小明二話沒說,就答應了。現要你是小明了,請完成如下題目功能。儲戶開戶 銷戶 存入 支出活動頻繁,系統設計要求 1 能比較...

資料結構課程設計

一 實訓目的 通過課程設計,學會運用資料結構知識,針對具體應用,自己設計合理資料結構,確定儲存結構,並能設計具體操作演算法,選擇使用具體語言進行實現。掌握c 較複雜程式的組織和設計過程,除錯技巧。學習解決實際問題的能力。題目1.小明是乙個計算機專業top student,祝賀他畢業了。並準備到銀行參...