java 关联表做修改_java-图关联列表实现
我知道我也許正在從死里復生一個老問題,但是我覺得應該發表評論.
您可以創建關聯列表圖形結構,也可以針對圖進行調整.
考慮LinkedList< Vertex>.對象和LinkedList< Edge>.賓語.這將使您可以遍歷所有邊緣和所有頂點,但不包含有關所有對象如何連接的信息.
假設我們添加了幾個LinkedList< Connection>對象.實際上,每個頂點一個.連接只是邊緣和頂點相交的地方.因此,邊緣將具有兩個Connection對象(對于無向圖),而頂點將具有一個LinkedList< Connection>.對象,表示與它連接的每個Edge的連接.本質上,這是一個事件列表.
如果刪除某些Connection對象,則可以修改它以表示有向圖.更具體地說,您必須選擇在哪些地方沒有這些引用.您可以選擇從關聯的LinkedList< Connection>中刪除連接.如果您不希望從頂點看到邊緣(對于上面的示例,N2將有一個空的LinkedList< Connection>).您可能改為選擇在Edge上使引用成為可選(對于上面的示例,E1將有一個指向N2的連接,而一個Connection為空,從而允許從E1遍歷到N2,但不能返回到N1.您選擇如何實現一個是更直觀的-邊緣是定向的,因此刪除邊緣上的連接以決定它們的連接方式似乎合乎邏輯.另一個可能一開始看起來有些復雜,但會阻止您不必要地跳到進行廣度優先和深度優先搜索時無用的邊緣.
點形式:
>在發生列表的實現中,我有.您需要實施嗎?
>嚴格來說,您可以只存儲傳出的邊緣.但是,回溯算法可能會受益于能夠沿其行進的參考進行回溯.當然,您可以使用某種歷史來實現此目的,因此可能不需要考慮太多.
>如果兩者都做,則可能需要某種方法來區分它是傳入還是傳出.是否通過具有兩個LinkedList< Connection>頂點上的對象,或者在Connection上具有布爾型pointingToVertex原語,或任何其他方式.也許您的邊緣將是有方向的,而無方向的邊緣將由兩個指向相反方向的邊緣組成.根據您的結構需要進行考慮.
總結
以上是生活随笔為你收集整理的java 关联表做修改_java-图关联列表实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java内嵌excel_如何在Excel
- 下一篇: http请求502_从知乎页面的502说