使用泛型實作鄰接表,內含兩個巢狀類別:
Vertex<TValue>:表頭節點,含 data、firstEdge、visited 標記Node:表節點,含 adjvex (指向表頭節點)、next 指標多個 Node 串成單向鏈表,儲存該頂點所有邊資訊。使用 List<Vertex<T>> 取代陣列,動態擴展。
AddDirectedEdge():加入有向邊,無向圖需呼叫兩次。新鄰接點加至鏈表尾部,便於檢查重複邊。ToString():格式化輸出「頂點:鄰接點列表」var a = new AdjacencyList<char>();
a.AddVertex('A'); a.AddVertex('B'); a.AddVertex('C'); a.AddVertex('D');
a.AddEdge('A','B'); a.AddEdge('A','C'); a.AddEdge('A','D'); a.AddEdge('B','D');
Console.WriteLine(a.ToString());
// 輸出:
// A:BCD
// B:AD
// C:A
// D:AB
visited 標記防止重複訪問