2011-10-22 65 views
3

我有一个定向的未加权图。给出节点数量和节点之间的所有链路。我试图用矢量数组完成任务,但是java不支持它。 ArrayList和Vectors支持随机访问迭代器,但无法在java中完成,因为我是新手。我不想为它使用二维矩阵。我想将它实现为N个给定节点的数组,其中每个节点都有一个连接到它的节点的列表。请有人提供一个伪代码或任何可以帮助我的东西。例如,给出的曲线图如下:如何在核心java中实现图形?

5 
3 4 
4 2 
1 5 
4 3 
1 3 
2 5 

这里给出了编号为1到5的5个节点。以下是从第一个节点到第二个节点的有向边。我想将它表示为图的邻接列表。任何人都可以实施它吗?

+2

你不妨看看那是一列列在本页面右下方计算器上的相关内容。另外,如果由于缺乏对Java库的知识(如集合库(ArrayLists,Vectors,...)的知识而受到阻碍,请尽量使用Google的某些教程,以便您可以使用这些有用的工具。此外,相关的内容链接会告诉你关于为图创建和操作专门构建的第三方库。 –

+0

我已经在谷歌以及在这个网站上搜索这个,但我找不到。最后我要问自己的问题。另外我不想使用第三方库。 –

+0

同样,即使只是为了让您知道如何开始以及您需要获得什么知识库,相关内容也会对您有用。即使你仍然无法弄清楚任务,这些信息至少可以帮助你写出更具知识性和更具体的问题。 –

回答

4

adjacency list例如Map<Node, List<Node>>List<List<Node>>可能是合适的。

附录:在使用Java Collections,它可能是有益的注意,MapListinterfaces是提供个性化的方法,而你可能要根据您要使用您的数据来实现的算法的要求来选择具体implementations结构体。

附录:有一个相关示例here

+0

是的,我试图用arraylist的arraylist与邻接列表来做,但无法用迭代器在其中插入值。 –

+1

啊,你会想编辑你的问题,包括一个[sscce](http://sscce.org/),它展示了你描述的问题。 – trashgod

+0

我已经链接到上面的一个例子。 – trashgod

1

您可以使用许多集合数据结构,特别是散列表或集合,以达到您的目的。 Java为您提供了大量的集合通用容器(HashMap-s,ArrayList-s等)。我不是Java专家,但搜索Java Collections给出了很多结果,例如, this tutorial

1

太糟糕了,您要求实施有向未加权图,而不是直接使用图。否则,我会建议你使用一个易于使用的框架来处理几乎所有与网络/图形有关的所谓JUNG2。您可以在GUI或非GUI模式下使用它。它会为你节省很多时间。以下是它的教程链接:

http://www.grotto-networking.com/JUNG/JUNG2-Tutorial.pdf