package com.atguigu.graph;import java.util.ArrayList;import java.util.Arrays;/*** ClassName: <br/>* Description: <br/>* Date: 2021-03-04 10:36 <br/>* @project data_algorithm* @package com.atguigu.graph*/public class Graph {private ArrayList<String> vertexList; // 存储定点集合private int[][] edges; // 存储图对应的临界矩阵private int numOfEdges; // 表示变的数目public static void main(String[] args) {// 测试一把图是否有创建okint n = 5;// 节点的个数String vertexValue[] = {"A", "B", "C", "D", "E"};// 创建图对象Graph graph = new Graph(n);// 循环添加顶点for (String value : vertexValue) {graph.insertVertex(value);}// 添加边graph.insertEdge(0,1,1);// A-Bgraph.insertEdge(0,2,1); // A-Cgraph.insertEdge(1,2,1); // B-Cgraph.insertEdge(1,3,1); // B-Dgraph.insertEdge(1,4,1); // B-Egraph.showGraph();}// 构造public Graph(int n) {// 初始化 矩阵和 vertexListedges = new int[n][n];vertexList = new ArrayList<String>();numOfEdges = 0;}// 图中常用的方法// 返回节点中的个数public int getNumOfVertex() {return vertexList.size();}// 显示图对应的矩阵public void showGraph() {for (int[] link : edges) {System.out.println(Arrays.toString(link));}}// 得到边的个数public int getNumOfEdges() {return numOfEdges;}// 返回节点i(下标)对应的数据 0->"A" 1->B 2->Cpublic String getValueByIndex(int i) {return vertexList.get(i);}// 返回v1和v2的权值public int getWeight(int v1, int v2) {return edges[v1][v2];}/*** 插入节点* @param vertex*/public void insertVertex(String vertex) {vertexList.add(vertex);}/*** 添加边* @param v1 表示点的下标 即 是第几个顶点 "A"="B" "A"->0 "B" ->1* @param v2 表示第二个顶点的下标* @param weight 表示他们是用什么关联的 是0还是1*/public void insertEdge(int v1, int v2, int weight) {edges[v1][v2] = weight;edges[v2][v1] = weight;}}
运行结果
[0, 1, 1, 0, 0][1, 0, 1, 1, 1][1, 1, 0, 0, 0][0, 1, 0, 0, 0][0, 1, 0, 0, 0]Process finished with exit code 0
