2012-07-18 88 views
0

我有一个Edge类存储:源(顶点),目标(顶点)和重量。如何在绘制图形后创建邻接列表?

我有一个顶点类,它存储:name,x坐标,y坐标和Edge [] adjacentList。

我也有一个Graph类,它存储两个ArrayLists:边和顶点。

当前当绘制顶点/节点和边时,它会自动添加到顶点和边列表中。

现在我想填充Edge [] adjacentList使用这两个数组列表,但我不知道如何做到这一点。如果有人能够给我指示或代码的外观如何,我将不胜感激。

谢谢。

回答

1

首先在代码中有冗余。 Edge类不需要包含源顶点,因为您将该边存储到顶点类中,所以显然顶点将成为源。

我们的边缘添加到任意顶点的邻接表:

假设你有两个顶点:A和B,其中A是源,B是 目标顶点。要创建一个边缘刚刚创建边缘 类的一个实例(显然是有定义的构造函数)并将其添加到顶点A的 邻接表

Edge e1= new Edge('B' , weightofedge); 
顶点的

假设实例V1即顶点然后v1.adjacentList[index]=e1;

或者你也可以在一行中完成。

+0

感谢您的回复。在绘制边缘时计算每个顶点的邻接列表是否更有效,或者最好是在运行算法之前一次完成所有边缘的邻接列表? – RikudouSennin 2012-07-18 21:01:13

+0

@RududouSennin我没有得到你的问题。你能详细说明一下吗? – dejavu 2012-07-19 07:41:52

+0

@ Android解码,我想知道当我绘制顶点和边缘时,填充邻接表是否更有效。换句话说,当创建Vertex和Edge的新实例时。或者,在执行算法之前,一旦图完全绘制完成后,最好计算邻接列表的最后位置? – RikudouSennin 2012-07-21 13:53:17

1

我会创建一个.either方法(这需要一个边作为参数并返回顶点)和一个.other方法(它需要一个顶点并返回其边的另一个顶点)。遍历Graph类中的边列表。对于每条边,请调用。要么获得一个顶点,要将其存储在某个变量中,我们称它为v1。现在打电话给其他顶点,称之为v2。

将v1,v2组合添加到v1的Edge []和v2的Edge []中。

1

有实现图形的一些方法:

你可以有顶点类,其中包含他的邻居,每个实例保持ArrayList的 或者你可以有一个布尔值| V | X | V |矩阵如果矩阵[i] [j]为真意味着您已经将边从顶点i指向顶点j。