邻接表是数组与链表相结合的存储方法,相比于顺序存储结构(邻接矩阵),节省空间。
来个小例子(无向图):
图1
图1邻接表的结构:
邻接表用链表来存储邻接点(分两个域,一个存顶点下标,一个存下一个邻接点的引用),通过一个类(我用了内部类,所以是private)定义邻接点:
private class AdgvexType {
int verNum = -1;//存储顶点数组下标,默认零
AdgvexType adg = null;//存储下一个邻接点的引用
public int getVerNum() {
return verNum;
}
public void setVerNum(int verNum) {
this.verNum = verNum;
}
public int getWeightNum() {
return weightNum;
}
public void setWeightNum(int weightNum) {
this.weightNum = weightNum;
}
public AdgvexType getAdg() {
return adg;
}
public void setAdg(AdgvexType adg) {
this.adg = adg;
}
@Override
public String toString() {
return "AdgvexType [verNum=" + verNum + ", weightNum=" + weightNum
+ "]";
}
}
邻接表用数组存储图的顶点,数组中每个元素包含两个域(一个存顶点,一个存它第一个临界点的引用),定义顶点数组:
private VertexeType[] verArr;// 顶点数组
// 顶点数据
private class VertexeType {
String vertexe = null;//存储顶点
AdgvexType adg = null;//存储第一个邻接点的引用
public VertexeType() {
}
public VertexeType(String vertexe) {
this.vertexe = vertexe;
}
public String getVertexe() {
return vertexe;
}
public void setVertexe(String vertexe) {
this.vertexe = vertexe;
}
public AdgvexType getAdg() {