邻接矩阵是表示图的一种常见方式,它使用二维数组来描述节点之间的连接关系。下面是一个用 C++ 编写的简单示例,演示了如何使用邻接矩阵来表示图:
#include <iostream>
#include <vector>
using namespace std;
class Graph {
private:
int V; // 图的顶点数
vector<vector<int>> adjMatrix; // 邻接矩阵
public:
// 构造函数,初始化图的顶点数和邻接矩阵
Graph(int vertices) : V(vertices) {
// 初始化邻接矩阵为 V * V 大小的二维数组,初始值为 0,表示没有边相连
adjMatrix.resize(V, vector<int>(V, 0));
}
// 添加边
void addEdge(int src, int dest) {
// 由于是无向图,所以边是双向的,因此在邻接矩阵中同时标记 src 和 dest 之间有边相连
adjMatrix[src][dest] = 1;
adjMatrix[dest][src] = 1;
}
// 打印邻接矩阵
void printAdjMatrix() {
cout << "Adjacency Matrix:" << endl;
for (int i = 0; i < V; ++i) {
for (int j = 0; j < V; ++j) {
cout << adjMatrix[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
// 创建一个包含 5 个顶点的图
Graph graph(5);
// 添加边
graph.addEdge(0, 1);
graph.addEdge(0, 4);
graph.addEdge(1, 2);
graph.addEdge(1, 3);
graph.addEdge(1, 4);
graph.addEdge(2, 3);
graph.addEdge(3, 4);
// 打印邻接矩阵
graph.printAdjMatrix();
return 0;
}
在这个示例中,我们定义了一个 Graph
类来表示图,其中 V
表示图的顶点数,adjMatrix
是邻接矩阵。构造函数 Graph(int vertices)
用于初始化图,addEdge(int src, int dest)
方法用于添加边,printAdjMatrix()
方法用于打印邻接矩阵。
在 main()
函数中,我们创建了一个包含 5 个顶点的图,并添加了一些边。然后调用 printAdjMatrix()
方法打印了邻接矩阵。