图的搜索算法

it2025-10-25  10

图形结构基础属性和方法

以下的代码演示都是以邻接矩阵表达方式来实现的

//图形结构(邻接矩阵) class Graph { //存储图中所有顶点 private List<String> vertexes; //图形结构的邻接矩阵 private int[][] matrix; //各顶点访问情况,true为已访问,false为未访问 private boolean[] visited; /** * 根据传入的顶点信息生成矩阵 * @param s */ public Graph(String s[]) { vertexes = new ArrayList<>(); for (String vertex : s){ vertexes.add(vertex); } matrix = new int[s.length][s.length]; } /** * 将俩个顶点连接,即生成边 * @param index1 顶点在集合中的索引 * @param index2 */ public void connect(int index1, int index2){ if (index1 < 0 || index1 > matrix.length || index2 < 0 || index2 > matrix.length){ throw new RuntimeException("该顶点未存在"); } //将新的邻接添加的邻接矩阵中 matrix[index1][index2] = 1; matrix[index2][index1] = 1; } /** * 展示邻接矩阵 */ public void showGraphMatrix(){ for (int arr[] : matrix){ System.out.println(Arrays.toString(arr)); } } /** * 获取顶点在邻接矩阵对应行row中的第一个邻接顶点下标 * @param row * @return 当有邻接顶点时返回邻接顶点下标,没有则返回-1 */ public int getFirstNeighbor(int row){ for(int i =0; i<matrix.length; i++){ if (matrix[row][i] != 0){ return i; } } return -1; } /** * 获取顶点在邻接矩阵对于行row中col列的下一个邻接顶点 * @param row * @param col * @return 当有邻接顶点时返回邻接顶点下标,没有则返回-1 */ public int getNeighbor(int row, int col){ for (int i=col+1; i<matrix.length; i++){ if (matrix[row][i] != 0){ return i; } } return -1; } }
最新回复(0)