2012-07-18 89 views
0

我有一個Edge類存儲:源(頂點),目標(頂點)和重量。如何在繪製圖形後創建鄰接列表?

我有一個頂點類,它存儲:name,x座標,y座標和Edge [] adjacentList。

我也有一個Graph類,它存儲兩個ArrayLists:邊和頂點。

當前當繪製頂點/節點和邊時,它會自動添加到頂點和邊列表中。

現在我想填充Edge [] adjacentList使用這兩個數組列表,但我不知道如何做到這一點。如果有人能夠給我指示或代碼的外觀如何,我將不勝感激。

謝謝。

回答

1

首先在代碼中有冗餘。 Edge類不需要包含源頂點,因爲您將該邊存儲到頂點類中,所以顯然頂點將成爲源。

我們的邊緣添加到任意頂點的鄰接表:

假設你有兩個頂點:A和B,其中A是源,B是 目標頂點。要創建一個邊緣剛剛創建邊緣 類的一個實例(顯然是有定義的構造函數)並將其添加到頂點A的 鄰接表

Edge e1= new Edge('B' , weightofedge); 
頂點的

假設實例V1即頂點然後v1.adjacentList[index]=e1;

或者你也可以在一行中完成。

+0

感謝您的回覆。在繪製邊緣時計算每個頂點的鄰接列表是否更有效,或者最好是在運行算法之前一次完成所有邊緣的鄰接列表? – RikudouSennin 2012-07-18 21:01:13

+0

@RududouSennin我沒有得到你的問題。你能詳細說明一下嗎? – dejavu 2012-07-19 07:41:52

+0

@ Android解碼,我想知道當我繪製頂點和邊緣時,填充鄰接表是否更有效。換句話說,當創建Vertex和Edge的新實例時。或者,在執行算法之前,一旦圖完全繪製完成後,最好計算鄰接列表的最後位置? – RikudouSennin 2012-07-21 13:53:17

1

我會創建一個.either方法(這需要一個邊作爲參數並返回頂點)和一個.other方法(它需要一個頂點並返回其邊的另一個頂點)。遍歷Graph類中的邊列表。對於每條邊,請調用。要麼獲得一個頂點,要將其存儲在某個變量中,我們稱它爲v1。現在打電話給其他頂點,稱之爲v2。

將v1,v2組合添加到v1的Edge []和v2的Edge []中。

1

有實現圖形的一些方法:

你可以有頂點類,其中包含他的鄰居,每個實例保持ArrayList的 或者你可以有一個布爾值| V | X | V |矩陣如果矩陣[i] [j]爲真意味着您已經將邊從頂點i指向頂點j。