我想创建一个有向图,我有三个变量:字符串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 ();
}
发布于 2011-04-11 08:47:27
如果你想创建一条线,即每条线代表一个顶点,一条边由两个连续的顶点组成,你可以创建/使用一个代表顶点的Vertex
类和一个引用2个顶点的Edge
类,这两个顶点构成了它的端点。
在您的图形类中,您可能只有一个顶点列表和一个边列表。然后,createVertex()
可以向列表中添加一个新的顶点,而addEdge()
将使用列表中的最后两个顶点创建一条边(如果至少有两个!)并将该边缘放在边缘列表中。
如果以后有由特定顶点形成的边(即,不是最后两个顶点),则可以使用列表中每个顶点的索引来引用它们,并通过这些索引定义边(即,从顶点0到5的边可以定义为0,5
)。
发布于 2011-04-11 08:51:06
这真的取决于你如何表示你的图表。我建议使用第三方库,如JGraph或JGraphT。如果你不能使用第三方库(例如家庭作业或者你只是想学习),那么你需要定义你自己的Graph类。
连接矩阵和邻接表是两种常见的表示形式。任何一种表示法都可以为您工作。
创建一个新顶点很简单,只需在JGraph图上调用addVertex即可。这将返回一个顶点对象。您需要为它提供两个参数,一个名称和一个数据对象。对于名称,可以使用递增的id号或原始的行字符串。然后,您需要从这三个字符串中创建一个数据对象,提供一个自定义数据对象对我来说最有意义。
我会跟踪最后插入的节点(从null开始),然后在前一个i不为null的时候在顶点之间创建边。确保每次迭代都更新上一个顶点。
https://stackoverflow.com/questions/5618653
复制相似问题