创建有向图

时间:2011-04-11 08:27:13

标签: java algorithm graph

我想创建一个有向图,我有三个变量:String x,y,z 第一个顶点包含3个变量,下一个顶点包含下一个3,直到循环结束

我有这个:

BufferedReader reader = new BufferedReader(
    new StringReader(contentTextArea.getText()));

try {
  str =reader.readLine();

  while(str != null) {
    String splitted[] = str.split("\\|");
    String x = splitted[0].trim();
    String y = splitted[1].trim();
    String z = splitted[2].trim();
  }          
}

所以这段代码每次给我3个字符串,我想每次创建一个顶点和一个边缘,这将在最后创建一个图形。 代码可能是这样的,但我不知道在里面写什么 createVertex (String x,y,z)addEdge ()方法。

public class graph {  
  createVertex (String x,y,z);
  addEdge ();
}

2 个答案:

答案 0 :(得分:0)

如果你想创建一个线条,即每条线代表一个顶点,一条边由两个连续的顶点组成,你可以创建/使用一个代表顶点的Vertex类和一个Edge类引用了形成其终点的2个顶点。

在图表类中,您可以只有一个顶点列表和一个边列表。 然后createVertex()可以在列表中添加一个新顶点,而addEdge()将使用列表中的最后两个顶点创建一个边(如果至少有两个!)并将边放在边列表上

如果稍后有由特定顶点形成的边(即不是最后两个顶点),您可以使用列表中每个顶点的索引来引用它们并通过这些索引定义边(即从顶点0到5可以定义为0,5)。

答案 1 :(得分:0)

这实际上取决于您如何表示图表。我建议您使用第三方库,例如JGraphJGraphT。如果您不能使用第三方库(例如用于家庭作业或您只是想学习),那么您需要定义自己的Graph类。

两种常见的表示形式是连接矩阵和邻接列表。任何表示都可以为您服务。

创建新顶点很简单,只需在JGraph图上调用addVertex即可。那将返回一个顶点对象。您需要为其提供两个参数,名称和数据对象。对于名称,使用递增的ID号或原始的行字符串。然后,您需要从三个字符串中创建一个数据对象,提供自定义数据对象对我来说最有意义。

我会跟踪插入的最后一个节点(开始为null),然后每当前一个不为空时创建顶点之间的边。确保每次迭代都更新前一个顶点。