我有一个Edge类,它存储:source(顶点),target(顶点)和weight。
我有一个Vertex类,它存储:name,x-coordinates,y-coordinates和Edge [] adjacentList。
我还有一个Graph类,它存储两个ArrayLists:edge和vertices。
目前,当绘制顶点/节点和边时,它会自动分别添加到顶点和边列表中。
现在我想使用这两个数组列表填充Edge [] adjacentList,但我不知道如何做到这一点。如果有人能够给我指示或概述代码的外观,我将不胜感激。
谢谢。
答案 0 :(得分:1)
我会创建一个.either方法(将Edge作为参数并返回Vertex)和.other方法(采用Vertex并返回其Edge的另一个Vertex)。迭代Graph类中的边列表。对于每个边缘,调用。要么获得一个顶点,将其存储在某个变量中,我们称之为v1。现在调用.other来获取另一个Vertex,称之为v2。
将v1,v2组合添加到v1的Edge []和v2的Edge []。
答案 1 :(得分:1)
首先,代码中存在冗余。 Edge类不需要包含源顶点,因为您将该边存储到Vertex类中,因此很明显顶点将是源。
现在将边添加到任何顶点的邻接列表中:
假设你有两个顶点:A和B.其中A是源,B是 目标顶点。要创建边缘,只需创建Edge实例 class(显然有定义的构造函数)并将其添加到 Vertex A的邻接列表。
Edge e1= new Edge('B' , weightofedge);
假设Vertex的实例是v1,即顶点A然后是v1.adjacentList[index]=e1;
或者你也可以在一行中完成。
答案 2 :(得分:1)
有一些实现图表的方法:
你可以拥有Vertex类,其中每个实例都包含包含其邻居的ArrayList, 或者你可以有一个bool | V | X | V |如果Matrix [i] [j]为真,则表示您已经从Vertex i到Vertex j的定向边。