(1) 数组表示法
Vertex.java
package ch18;
/**
* 顶点类
* @author gzw
*
*/
public class Vertex {
private char label; //表示A,B,C,D,E,F... ...等顶点
public Vertex(char label) {
this.label = label;
}
}
Graph.java
package ch18;
/**
* 图
* @author Administrator
*
*/
public class Graph {
//顶点数组
private Vertex[] vertexList;
//邻接矩阵
private int[][] adjMat;
//顶点的最大数目
private int maxSize;
//当前顶点
private int nVertex;
public Graph(int maxSize) { this.maxSize = maxSize; vertexList = new Vertex[maxSize];
vertexList = new Vertex[maxSize];
adjMat = new int[maxSize][maxSize];
for(int i = 0; i < maxSize; i++) {
for(int j = 0; j < maxSize; j++) {
adjMat[i][j] = 0; //初始条件:所有顶点都不相连(无边)
}
}
nVertex = 0;
}
/**
* 添加顶点
*/
public void addVertex(char label) {
vertexList[nVertex++] = new Vertex(label);
}
/**
* 添加边
*/
public void addEdge(int start,int end) {
adjMat[start][end] = 1;
adjMat[end][start] = 1;
}
}
TestGraph.java
package ch18;
public class TestGraph {
public static void main(String[] args) {
/*Graph g = new Graph();
g.addVertex('A');
g.addVertex('B');
g.addVertex('C');*/
char[] vertexs = new char[]{'A','B','C'}; //初始化顶点 for(int i=0;i<vertex.length;i++){ g.addVertex(vertex[i]); } //初始化边
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
}
}