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