我需要用Java实现图形。我不能使用集合类。我可以使用Adjacency Matrix或Adjacency List轻松创建图形,但我需要使用链接结构创建有向图。
我可能会得到邻接矩阵形式:
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。我不知道如何进入艰难的回报。
继续我的问题,我在StackOverflow上发现了一个类似的问题:
Questions regarding Implementation of graph in c++
在最佳接受的答案中,pmr写道:
1。)是的,您也可以使用指向其他节点的指针显式实现它。
pmr的答案是我需要的解决方案。这是我遇到麻烦的地方。我根本无法想象这个解决方案。其中一个问题是如何允许从文件中读取多个子节点,以便我可以引用它们进行搜索?一个邻接列表实现将允许我创建一个链表的数组,但我不能使用它。
这是一张多图吗?这是多图解决的问题吗?
备选:我还设想了一个树结构,每个父节点有多个子节点。
我将如何在Java中实现它?
答案 0 :(得分:0)
一种可能的解决方案:
创建一个表示每个图节点的类。
class GraphNode {
LinkedList<GraphNode> children;
}
您读入的每一行数据都代表一个GraphNode。该行中的每个“1”表示与“1”在相同索引处的GraphNode链接。
为每一行创建一个GraphNode,并将其添加到GraphNodes的列表/数组中(可称为'allNodes')。对于一行中的每个1或0,递增计数器。如果它是1,则将该索引的allNodes中的Node(使用counter作为索引)添加到当前节点的子节点。
现在您将拥有一个GraphNode列表,每个GraphNode都有自己的GraphNodes列表。
希望这是有道理的。