2016-11-21 27 views
0

我需要使用Java實現圖形。我無法使用集合類。我可以使用鄰接矩陣或鄰接列表輕鬆創建圖形,但我需要使用鏈接結構創建有向圖。使用鏈接結構的Java中的圖形表示

我可能會得到鄰接矩陣形式:

4   // square matrix size -- all would be square -- square only 
0 1 1 0 
1 1 1 1 
1 0 0 0 
1 1 0 1 

注:這應該是一個4x4矩陣,但我不能爲StackOverflow的正確格式。我不知道如何進入硬回報。

繼續我的問題,我發現在計算器上一個類似的問題:

Questions regarding Implementation of graph in c++

凡在最好接受的答案,PMR寫道:

1)是的,你也可以實現它明確使用指向其他節點的指針。

pmr這個答案是我需要的解決方案的形式。這是我遇到麻煩的地方。我根本無法在我的腦海中找到這個解決方案。其中一個問題是,如何允許從文件中讀取多個子節點,以便我可以引用它們進行搜索?一個鄰接表實現將允許我創建一個鏈表,但我不能使用它。

這是一個多圖嗎?這是多圖解決的問題嗎?

備選:我還設想了一個樹狀結構,每個父級有多個子節點。

我該如何去實現這個在Java中?

+0

您是否允許實現自己的鏈接列表,而不是使用Java中內置的? – DejaVuSansMono

+0

是的,我有一個可以使用的鏈接列表實現。我自己創造了它,現在就足夠了。它正在工作,測試和調試。 –

+0

你將不得不遍歷圖嗎? – DejaVuSansMono

回答

0

一種可能的解決方案:

創建一個表示每個圖節點的類。

class GraphNode { 
    LinkedList<GraphNode> children; 
} 

您讀入的每行數據都將表示GraphNode。該行中的每個'1'表示與GraphNode的鏈接,其索引與'1'相同。

爲每行創建一個GraphNode並將其添加到GraphNodes的列表/數組(可能稱爲'allNodes')。對於線上的每個1或0,增加一個計數器。如果它是1,則將該索引的所有節點中的節點(使用計數器作爲索引)添加到當前節點的子節點。

現在您將擁有一個GraphNode列表,每個GraphNode都有自己的GraphNodes列表。

希望是有道理的。