JAVA数据结构与算法之————图(邻接表)
图节点结构:
public class VertexNode {
/*节点数据*/
public String data;
/*指向第一边节点的指针*/
public EdgeNode firstedge;
/*标记节点是否被访问*/
public boolean isVisited;
/*无参构造函数*/
public VertexNode(){
this.data = null;
this.firstedge = null;
this.isVisited = false;
}
/*带参构造函数*/
public VertexNode(String data, EdgeNode firstedge){
this.data = data;
this.firstedge = firstedge;
this.isVisited = false;
}
}
边结构:
public class EdgeNode {
/*边连接的顶点信息*/
public String adjvex;
/*权重*/
public int weight;
/*指向下一条边的指针*/
public EdgeNode next;
public EdgeNode(){
};
public EdgeNode(String adjvex, int weight, EdgeNode next){
this.adjvex = adjvex;
this.weight = weight;
this.next = next;
}
}
图结构:
public class GraphAdjList<E> {
/*存储节点的数组*/
public List<E> adjList = new ArrayList<>();
/*记录节点数目和边数*/
public int numVertexes, numEdges;
}
数据data.txt:
9
15
0
1
2
3
4
5
6
7
8
0 1 1
0 2 5
1 2 3
1 3 7
1 4 5
2 4 1
2 5 7
3 4 2
3 6 3
4 5 3
4 6 6
4 7 9
5 7 5
6 7 2
6 8 7
7 8 4
创建图:
public void createALGraph(GraphAdjList<VertexNode> G, boolean isDigr