/* 鄰接矩陣表示圖 */
public
class
graph
}private
int vertexnum;
private
int edgenum;
private
int g[
];// 鄰接矩陣
public
graph
(int vertexnum)
public
void
insertedge
(edge edge)
public
void
show()
system.out.
println()
;}}}
假設當前的圖是無向圖,那麼矩陣關於主對角線對稱,我們可以只提取下三角或上三角的資訊。
對於稀疏圖,矩陣中存在大量的0,浪費空間。
假設當前的圖是無向圖,那麼矩陣關於主對角線對稱,我們可以只提取下三角或上三角的資訊。
對於圖來說,鄰接矩陣是不錯的一種圖儲存結構,但是我們也發現,對於邊數相對頂點較少的圖,這種結構是存在對儲存空間的極大浪費的。因此我們考慮另外一種儲存結構方式:鄰接表(adjacency list),即陣列與煉表相結合的儲存方法。
/* 鄰接表表示圖 */
public
class
graph2
}class
vertex
private
int vertexnum;
private
int edgenum;
private vertex vertexarr;
// 頂點陣列
public
graph2
(int vertexnum)
}// 插入有向邊
public
void
insertedge
(int v1,
int v2,
int weight)
current =
newnode
(v2, weight, null)
;// 在鍊錶末尾插入新的節點
// 如果是無向圖,還要再插入邊
current = vertexarr[v2]
.first;
while
(current != null)
current =
newnode
(v1, weight, null)
;// 在鍊錶末尾插入新的節點
}}
鄰接表轉鄰接矩陣
假設無向圖g採用鄰接矩陣儲存,編寫乙個演算法輸出鄰接表。description 第一行為乙個 整數n,表示頂點的個數 頂點 編號為0到n 1 接下來是為乙個n n大小的 整數矩陣,表示圖的鄰接關係。數字為0表示不鄰接,1表示鄰接。input 輸出圖g的鄰接表。第一行表示頂點0可直接到達的 頂點編號。...
鄰接矩陣 鄰接鍊錶 轉換
include include include graph.h include using namespace std typedef int infotype define maxv 100 最大頂點個數 define inf 32767 inf表示 以下定義鄰接矩陣型別 typedef stru...
C 拓撲排序(鄰接矩陣與鄰接表
博主新手,最近在學習拓撲排序,查閱網上資料發現有些難懂且很多方法的 不盡相同,於是就想著試試自己能不能寫出來,經過一段時間的嘗試,最終實現了拓撲排序,現在將自己的想法發表出來,可能有些瑕疵,希望各位看後不吝賜教 不知道是不是就是網上的方法,之前看網上的沒看懂.建立鄰接矩陣,輸入頂點數和邊數,初始化所...