15

我想创建一个程序来创建一个图(具体来说是一个程序图),它在节点上存储值,还存储每个节点连接到的其他节点。

我正在考虑使用链表来做到这一点。这是正确的方法吗?任何其他建议将不胜感激。

4

3 回答 3

25

在大多数情况下,使用邻接列表对图形进行建模是个好主意。可能有现有的框架可以做到这一点,但如果您对作为练习的表示感兴趣,您通常需要两件事。首先,一个包含所有节点的 HashMap,节点的节点标签可以是键,节点本身就是值。

Java API在此处记录 HashMaps 。

在每个节点对象中,您需要一个与该节点相邻的节点列表。最好使用 ArrayList 来完成,这里记录了它。

以下是它的组织方式。

import java.util.Hashmap;
import java.util.ArrayList;

class Node {
    String label;
    ArrayList<Node> adjacencyList;
}

HashMap<String, Node> graph = new HashMap<String, Node>();

您希望在图上运行的大多数算法都可以在此表示上运行良好。

于 2012-04-16T19:36:22.827 回答
1

您正在寻找的似乎是TreeNode API。实际上,swing 包中有一个不错的包,它已经存在于 Java SE 中,默认实现是:javax.swing.tree.DefaultMutableTreeNode。它可以在 Swing 应用程序之外使用,并提供非常标准的 TreeNode 模型。

您会找到适合您需要的所有东西:getChildren ()、getParent ()、setUserObject ()... 等等,以及在节点树上爬行和搜​​索的每个递归方法。

好消息是您将获得在几分钟内编写 JTree UI 的能力!

于 2012-04-16T21:14:17.777 回答
0

您可以编写自己的图形对象或使用Jung 之类的东西。

于 2012-04-16T19:13:34.747 回答