1 回答

TA貢獻1829條經驗 獲得超7個贊
1)要實現的算法
①建立圖的存儲結構
②深度優先搜索和廣度優先搜索
③求圖的最小生成樹
④拓撲排序
⑤最短路徑
2)存儲結構設計
本系統采用圖結構(mgraph)存儲抽象操作的信息。其中,各結點間的鄰接關系用圖的鄰接矩陣類型(adjmatrix)存儲。頂點信息用結構數組(vexs)存儲。其中每個數據元素師一個結構變量,包括一些基本信息。
此外,本系統還設置了三個全局變量:visited[]數組用于存儲頂點是否被訪問標記;d[]用于存放邊上的權值或者是存儲查找路徑頂點的編號;campus是一個圖結構的全局變量
3)功能設計
本程序一共設置了9個子功能菜單,圖的初始化由函數initgraph()實現,依據讀入的圖的頂點個數和邊的個數。分別初始化圖結構中圖的頂點向量數組和圖的鄰接矩陣。9個功能設計描述如下:
①建立有向圖。有向圖的建立有由BuildAdjacencyList()實現。當用戶選擇該功能時,用戶要手動輸入該圖的信息。從而建立有向圖。
②輸出鄰接表。鄰接表的輸出有函數ShowAdjacencyList()實現。當用戶選擇該項功能時,系統即以鄰接表的形式輸出各頂點所連接的點。
③輸出頂點的度。頂點讀的輸出由函數ShowAdjacencyListDegree()實現。當用戶選擇該功能時,系統即將每個頂點的度以數字的形式輸出。
④進行拓撲排序。拓撲排序功能的實現由函數TopologicalSortAdjacencyList()完成。一旦選擇,就會進行排序并輸出。
⑤深度優先遍歷。采用DFS算法進行深度優先遍歷,遍歷完成后,將遍歷得到的結點有序輸出。
⑥廣度優先遍歷。采用BFS算法進行廣度優先遍歷,遍歷完成后,將遍歷得到的結點有序輸出。
⑦無向圖最小生成樹。最小生成樹的算法實現由函數AdjacencyListPrim()完成。該函數采用Prim算法對鄰接矩陣求最小生成樹并輸出。
⑧有向圖求最短路徑。最短路徑的實現采用函數AdjacencyListDijkstra()完成。該函數采用的是Dijkstra 算法對鄰接矩陣對各頂點到其他頂點的最短距離。并依次輸出。
- 1 回答
- 0 關注
- 666 瀏覽
添加回答
舉報