1. 程式人生 > >20162313 苑洪銘 實驗四 圖的實現與應用

20162313 苑洪銘 實驗四 圖的實現與應用

isempty 元素 list div 包含 之間 分代 自己 png

20162313 苑洪銘 實驗四 圖的實現與應用

實驗1

要求

用鄰接矩陣實現無向圖(邊和頂點都要保存),實現在包含添加和刪除結點的方法,添加和刪除邊的方法,size(),isEmpty(),廣度優先叠代器,深度優先叠代器
給出偽代碼,產品代碼,測試代碼(不少於5條測試)

內容

鄰接矩陣(Adjacency Matrix):是表示頂點之間相鄰關系的矩陣。設G=(V,E)是一個圖,其中V={v1,v2,…,vn}。
對無向圖而言,鄰接矩陣一定是對稱的,而且主對角線一定為零,副對角線不一定為0。
總的來說,這次的代碼首先定義一下頂點和邊,
然後在此基礎上,編寫添加刪除操作以及size 、isempty方法
如圖在size方法直接返回前文中定義的size值即可
而isempty方法我認為返回size值為0時就可以了。
深度廣度叠代器課本上就有現成的代碼。
並且該試驗中的大部分代碼都可以在老師給的PPT上找到,包括偽代碼等等。
技術分享圖片


技術分享圖片
技術分享圖片

實驗2

要求

用十字鏈表實現無向圖(邊和頂點都要保存),實現在包含添加和刪除結點的方法,添加和刪除邊的方法,size(),isEmpty(),廣度優先叠代器,深度優先叠代器
給出偽代碼,產品代碼,測試代碼(不少於5條測試)

內容

十字鏈表(Orthogonal List)是有向圖的一種存儲方法,它實際上是鄰接表與逆鄰接表的結合,即把每一條邊的邊結點分別組織到以弧尾頂點為頭結點的鏈表和以弧頭頂點為頭頂點的鏈表中。
可以理解為 將行的單鏈表和列的單鏈表結合起來存儲稀疏矩陣稱為十字鏈表, 每個節點表示一個非零元素。
主要用於解決當矩陣的非零元個數和位置在操作過程中變化較大時,不宜采用順序存儲結構來表示三元組的線性表的問題。
如圖:
技術分享圖片


該實驗的主要難題我認為在於指向問題,為了完成指向操作,對於十字鏈表清醒的認識是最重要的。
對於代碼而言,與實驗一大同小異,參考實驗一的部分。
定義頂點與邊,再參考網上的代碼實現其它實驗要求。
技術分享圖片

實驗3

要求

實現PP19.9
給出偽代碼,產品代碼,測試代碼(不少於5條測試)

內容

對於PP19.9 要求很奇特,實際根據我自己的理解,翻譯一下就是
構建一個圖要求有帶權值的邊並且求最短路徑。
當翻譯成這樣簡單明了的要求後,
我的辦法是參考網上的代碼,並且根據老師給的PPT內容,了解一下相關操作,由此進行要求實現。
技術分享圖片

20162313 苑洪銘 實驗四 圖的實現與應用