2013-01-05 56 views
-2

我想用C實現圖。我很困惑應該如何存儲每個節點。我首先想到使用鏈表,但我怎樣才能存儲連接到一個節點的下一個節點。關於在c中實現圖的數據結構的想法

任何想法應該使用什麼數據結構,我應該如何使用它?

+0

結構的最佳選擇取決於您需要在圖表上執行哪些操作,以及它的大小和稀疏程度。 – NPE

+2

對於這些類型的問題,[Google是你的朋友](http://www.google.com/search?q=c+graph+structure),而StackOverflow是一個痛苦的屁股。 –

+1

希望這可以幫助http://www.cs.bu.edu/teaching/c/graph/linked/ –

回答

0

有一些衆所周知的方式來做到這一點。

一個是使用大小爲[n] [n]的二維數組,其中n是節點數。然後,如果存在從a到b的鏈接,則設置圖[a] [b] = 1。這種方法通常很快,但使用了大量的內存,特別是如果沒有那麼多的鏈接和許多節點的話。

另一種方法是爲所有節點製作一個列表(或一個數組),並將其中的每個人的內容設置爲指向動態數組或其鏈接的節點列表。

0

在圖形稀疏的情況下有用的數據結構是adjacency list(鏈接列表的鏈表),這是當頂點之間的連接(邊)很少時。

如果你的圖是dense然後使用adjacency matrix(nxn)2維數組,這是你的頂點之間有很多邊緣的情況。