首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建有向图

创建有向图
EN

Stack Overflow用户
提问于 2011-04-11 16:27:13
回答 2查看 2.1K关注 0票数 2

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

我有这个:

代码语言:javascript
复制
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 ()方法。

代码语言:javascript
复制
public class graph {  
  createVertex (String x,y,z);
  addEdge ();
}
EN

回答 2

Stack Overflow用户

发布于 2011-04-11 16:47:27

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2011-04-11 16:51:06

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

连接矩阵和邻接表是两种常见的表示形式。任何一种表示法都可以为您工作。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5618653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档