二维数组邻接矩阵,求代码!超急!
游客
发布于 2023-12-05
阅读(24)
在Java中,一个简单的二维数组邻接矩阵可以这样表示:javapublic class AdjacencyMatrix { private int[][] matrix; // 二维数组用于存储邻接矩阵 private int vertices; // 图中的顶点数 public AdjacencyMatrix(int vertices) { this.vertices = vertices; this.matrix = new int[vertices][vertices]; } // 设置边的权值 public void setEdge(int source, int destination, int weight) { matrix[source][destination] = weight; if (!isDirected()) { // 如果图是无向的,则对称设置权值 matrix[destination][source] = weight; } } // 获取边的权值 public int getEdge(int source, int destination) { return matrix[source][destination]; } // 判断是否有边 public boolean hasEdge(int source, int destination) { return getEdge(source, destination) != 0; } // 返回图是否为有向图 public boolean isDirected() { // 在实际实现中,可能需要根据具体的类属性来判断图的类型 // 这里假设所有的图都是无向的 return false; } // 打印邻接矩阵 public void printMatrix() { for (int i = 0; i < vertices; i++) { for (int j = 0; j < vertices; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.println(); } } // 深度优先搜索(DFS) public void dfs(int vertex, boolean[] visited) { visited[vertex] = true; System.out.println("访问顶点: " + vertex); for (int neighbor = 0; neighbor < vertices; neighbor++) { if (matrix[vertex][neighbor] != 0 && !visited[neighbor]) { dfs(neighbor, visited); } } } // 广度优先搜索(BFS) public void bfs(int startVertex) { boolean[] visited = new boolean[vertices]; Queue queue = new LinkedList<>(); visited[startVertex] = true; queue.add(startVertex); while (!queue.isEmpty()) { int current = queue.poll(); System.out.println("访问顶点: " + current); for (int neighbor = 0; neighbor < vertices; neighbor++) { if (matrix[current][neighbor] != 0 && !visited[neighbor]) { visited[neighbor] = true; queue.add(neighbor); } } } }}这个代码示例包括了一个邻接矩阵的基本操作,如设置和获取边的权值、判断是否有边、打印邻接矩阵以及进行深度优先搜索(DFS)和广度优先搜索(BFS)。请注意,这只是一个基本实现,并没有包含所有可能的功能,例如添加或删除顶点和边等。在实际应用中,你可能需要根据具体的需求进行扩展。
- 上一篇: 可以从PE系统在电脑硬盘内一键安装系统吗
- 下一篇: wps一个单元格内容转换成多行?