边集数组是由两个一维数组构成。一个是存储顶点的信息;另一个是存储边的信息。
这个边数组每个数据元素由一条边的起点下标(begin)、终点下标(end)和权(weight)组成。
如上图所示,边集数组关注的是边的集合,在边集数组中要查找一个顶点的度需要扫描整个边数组,效率并不高。
因此它更适合对边依次进行处理的操作,而不适合对顶点相关的操作。
java实现
public class G2 {
String[] vertexs;
List<Edge> edges;
public G2(String[] vertexs, List<Edge> edges) {
super();
this.vertexs = vertexs;
this.edges = edges;
}
public static void main(String[] args) {
String[] vertexs = new String[]{"V0","V1","V2","V3"};
Edge edge1 = new Edge(0, 1, 5);
Edge edge2 = new Edge(2, 3, 7);
Edge edge3 = new Edge(1, 3, 8);
Edge edge4 = new Edge(2, 1, 54);
List<Edge> edges = new ArrayList<Edge>();
edges.add(edge1);
edges.add(edge2);
edges.add(edge3);
edges.add(edge4);
G2 g2 = new G2(vertexs, edges);
}
}
class Edge{
int begin;//开始下标
int end;//结束下标
int weight;//权重
public Edge(int begin, int end, int weight) {
this.begin = begin;
this.end = end;
this.weight = weight;
}
}
最简单最没有实现难度的一个了!