在计算机科学中,图(Graph)是一种非常重要的非线性数据结构,广泛应用于社交网络、路径规划、推荐系统等领域。而邻接矩阵是表示图的一种经典方式。本教程将带你从零开始,使用Java语言实现一个简单的邻接矩阵,即使你是编程小白,也能轻松理解!
邻接矩阵是一个二维数组(或矩阵),用于表示图中顶点之间的连接关系。假设图中有 n 个顶点,那么邻接矩阵就是一个 n × n 的方阵。
i 和顶点 j 之间有边,则 matrix[i][j] = 1(对于无权图)或赋予权重值(对于有权图)。matrix[i][j] = 0。
优点:
缺点:
下面我们用Java语言编写一个简单的邻接矩阵类,支持添加边、打印矩阵等基本操作。
public class AdjacencyMatrix { private int[][] matrix; private int vertices; // 构造函数:初始化邻接矩阵 public AdjacencyMatrix(int vertices) { this.vertices = vertices; matrix = new int[vertices][vertices]; // 初始化所有元素为0(表示无边) for (int i = 0; i < vertices; i++) { for (int j = 0; j < vertices; j++) { matrix[i][j] = 0; } } } // 添加一条无向边 public void addEdge(int start, int end) { if (start >= 0 &&& start < vertices && end >= 0 && end < vertices) { matrix[start][end] = 1; matrix[end][start] = 1; // 无向图:对称 } else { System.out.println("顶点索引超出范围!"); } } // 打印邻接矩阵 public void printMatrix() { for (int i = 0; i < vertices; i++) { for (int j = 0; j < vertices; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } // 主方法:测试示例 public static void main(String[] args) { AdjacencyMatrix graph = new AdjacencyMatrix(4); graph.addEdge(0, 1); graph.addEdge(0, 2); graph.addEdge(1, 2); graph.addEdge(2, 3); System.out.println("邻接矩阵表示:"); graph.printMatrix(); }} 上面的代码实现了以下功能:
AdjacencyMatrix(int vertices):构造函数,创建一个 vertices × vertices 的二维数组,并初始化为0。addEdge(int start, int end):添加一条无向边。注意我们同时设置 matrix[start][end] 和 matrix[end][start] 为1,因为是无向图。printMatrix():遍历并打印整个邻接矩阵。运行上述代码,输出结果如下:
邻接矩阵表示:0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 如果你要处理有权图,只需将 matrix[i][j] 赋值为具体的权重(如距离、成本等),而不是简单的0或1。此外,对于有向图,添加边时只需设置 matrix[start][end] = 1,无需对称赋值。
通过本教程,你已经掌握了如何使用Java邻接矩阵来表示图结构。这是学习更高级图算法(如深度优先搜索、广度优先搜索、Dijkstra最短路径等)的基础。希望这篇数据结构教程能帮助你打下坚实的基础!
关键词回顾:Java邻接矩阵、图的表示方法、邻接矩阵实现、数据结构教程。
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128670.html