建邻接链表分三部分:
要有一个总类Graph来存储所有的头节点
//邻接表实现图的建立
public class Graph {
public MyList<VertexNode> adjList; // 保存邻接表的头节点
public MyList<Boolean> visit;
public Graph( ) {
adjList = new MyList<VertexNode>();
visit = new MyList<Boolean>(); //标记
}
}
这是所有头节点的类结构
// 邻接表节点的类型
public class VertexNode {
public String name;
public Attraction attraction;
public EdgeNode firstArc = new EdgeNode(); // 指向第一条弧
public VertexNode(){
}
public VertexNode(String pName,Attraction attraction){
name = pName;
this.attraction = attraction;
}
}
之后的每一条边的类结构
public class EdgeNode {
// 储存边
public int index;//留下它是为了标识是否为同一条边
public String name;
public boolean flag = true;
public int value; // 权值
public EdgeNode nextArc; // 指向下一条弧
}
这就建立了基本的数据结构,在其中的MyList是自己写的模板类
接口:
public interface KMyList<T> {
public void add(T item);
public void remove(int index);
public T get(int index);
p