一、邻接表无线图
无向图的邻接表结构如下所示:
无向图的邻接表的代码实现:
/*
* 邻接表无向图(已提供参数)
* 输入说明:vexs -- 顶点数组
* edges -- 边数组
* 输出说明:邻接表(即每个顶点所连接的点)
*/
package test;
public class ListUDG {
int vlen; // 顶点个数
int elen; // 边个数
VertexNode[] vertexNodeList; // 顶点数组
EdgeNode edgeNode;
/**
* 构造函数
* @param vexs
* @param edges
*/
public ListUDG(char[] vexs, char[][] edges) {
vlen = vexs.length;
elen = edges.length;
// 初始化顶点,建立顶点表
vertexNodeList = new VertexNode[vlen];
for (int i = 0; i < vlen; i++) {
vertexNodeList[i] = new VertexNode();
vertexNodeList[i].vertex = vexs[i];
vertexNodeList[i].firstedge = null;
}
// 初始化边,利用头插法建立邻接表
for (int i = 0; i < elen; i++) {
EdgeNode edgeNode_1 = new EdgeNode();
EdgeNode edgeNode_2 = new EdgeNode();
int vi = getPosition(edges[i][0], vexs);
int vj = getPosition(edges[i][1], vexs);
edgeNode_1.adjvex = edges[i][1];
edgeNode_1.next = vertexNodeList[vi].firstedge;
vertexNodeList[vi