我想创建一个程序来创建一个图(具体来说是一个程序图),它在节点上存储值,还存储每个节点连接到的其他节点。
我正在考虑使用链表来做到这一点。这是正确的方法吗?任何其他建议将不胜感激。
我想创建一个程序来创建一个图(具体来说是一个程序图),它在节点上存储值,还存储每个节点连接到的其他节点。
我正在考虑使用链表来做到这一点。这是正确的方法吗?任何其他建议将不胜感激。
在大多数情况下,使用邻接列表对图形进行建模是个好主意。可能有现有的框架可以做到这一点,但如果您对作为练习的表示感兴趣,您通常需要两件事。首先,一个包含所有节点的 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>();
您希望在图上运行的大多数算法都可以在此表示上运行良好。
您正在寻找的似乎是TreeNode API。实际上,swing 包中有一个不错的包,它已经存在于 Java SE 中,默认实现是:javax.swing.tree.DefaultMutableTreeNode。它可以在 Swing 应用程序之外使用,并提供非常标准的 TreeNode 模型。
您会找到适合您需要的所有东西:getChildren ()、getParent ()、setUserObject ()... 等等,以及在节点树上爬行和搜索的每个递归方法。
好消息是您将获得在几分钟内编写 JTree UI 的能力!
您可以编写自己的图形对象或使用Jung 之类的东西。