基本概念
邻接表是由一个顺序存储结构的顶点表和多个链式存储的边表组成的。
邻接表类描述
边结点类
package cho6;
/**
* 邻接表边结点类
* @author asus
*
*/
public class ArcNode {
public int adjVex;//存放与当前顶点邻接的顶点在图中的位置
public int value;//边的权值
public ArcNode nextArc;//指向下一个边结点
public ArcNode() {
this(-1,0,null);
}
public ArcNode(int adjVex) {
this(adjVex,0,null);
}
public ArcNode(int adjVex,int value) {
this(adjVex,value,null);
}
public ArcNode(int adjVex,int value,ArcNode nextArc) {
this.adjVex = adjVex;
this.value = value;
this.nextArc = nextArc;
}
}
顶点结点类
package cho6;
/**
* 顶点结点类
* @author asus
*
*/
public class VNode {
public Object data;//数据域,存放顶点值
public ArcNode firstArc;//指针域,指向第一个边结点
public VNode(){
this(null,null);
}
public VNode(Object data) {
this(data,null);
}
public VNode(Object data, ArcNode firstNode) {
this.data = data;
this.firstArc = firstNode;
}
}
邻接表类
package cho6;
import java.util.Scanner;
/**
* 邻接表类
* @author asus
*
*/
//相关接口定义参见页底
public class ALGraph implements IGraph {
public enum graphKind {//构建图的枚举类型
UDG, DG, UDN, DN
};
private graphKind kind;
private int vNum, eNum;//保存顶点数