一、图的快速入门案例
要求: 代码实现如下图结构
public class GraphDemo{public static void main(String[] args) {//测试一把图是否创建 okint n = 8; //结点的个数//String Vertexs[] = {"A", "B", "C", "D", "E"};//创建图对象Graph graph = new Graph(n);//循环的添加顶点for(String vertex: Vertexs) {graph.insertVertex(vertex);}//显示一把邻结矩阵graph.showGraph();}}public class Graph {private ArrayList<String> vertexList; //存储顶点集合private int[][] edges; //存储图对应的邻结矩阵private int numOfEdges; //表示边的数目//构造器public Graph(int n) {//初始化矩阵和 vertexListedges = new int[n][n];vertexList = new ArrayList<String>(n);}//图中常用的方法//返回结点的个数public int getNumOfVertex() {return vertexList.size();}//显示图对应的矩阵public void showGraph() {for(int[] link : edges) {System.err.println(Arrays.toString(link));}}//得到边的数目public int getNumOfEdges() {return numOfEdges;}//返回结点 i(下标)对应的数据 0->"A" 1->"B" 2->"C"public String getValueByIndex(int i) {return vertexList.get(i);}//返回 v1 和 v2 的权值public int getWeight(int v1, int v2) {return edges[v1][v2];}//插入结点public void insertVertex(String vertex) {vertexList.add(vertex);}//添加边/**** @param v1 表示点的下标即使第几个顶点 "A"-"B" "A"->0 "B"->1* @param v2 第二个顶点对应的下标* @param weight 表示*/public void insertEdge(int v1, int v2, int weight) {edges[v1][v2] = weight;edges[v2][v1] = weight;numOfEdges++;}}
