一、概述
邻接表处理方法:
- 用一位数组存储顶点(为何不用单链表存储?数组可以较容易获得读取顶点信息),此外,每个数据元素还存储指向第一个邻接点的指针;
- 每个顶点Vi的所有邻接点构成一个线性表。
data:数据域,存储顶点Vi的名或其他信息 firstedge:指针域,指向此顶点的第一个邻接点
adjvex:邻接点域,指示与Vi连接的节点在图中的位置 info:存储边或弧的相关信息,如权值,边编号等
next:下一条边或弧的相关信息
二、图的邻接表存储表示
- 头节点类
public class VertextNode {
private String data;//顶点域
private EdgeNode firstEdge;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public EdgeNode getFirstEdge() {
return firstEdge;
}
public void setFirstEdge(EdgeNode firstEdge) {
this.firstEdge = firstEdge;
}
}
- 边表节点
public class EdgeNode {
private String Adjvex;//邻接点域,存储该顶点对应下标
private int weight;//权重
private EdgeNode next;
private int edgeInfo;//边值
public int getEdgeInfo() {
return edgeInfo;
}
public void setEdgeInfo(int edgeInfo) {
this.edgeInfo = edgeInfo;
}
public String getAdjvex() {
return Adjvex;
}
public void setAdjvex(String adjvex) {
Adjvex = adjvex;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public EdgeNode