邻接矩阵的c++代码实现
时间: 2024-11-03 19:05:48 浏览: 16
C++ 邻接矩阵
邻接矩阵是一种常见的图数据结构,它用二维数组表示图中每个顶点之间的连接关系。下面是一个简单的C++代码实现,假设我们有一个无向图:
```cpp
#include <iostream>
#include <vector>
// 定义一个无向图节点
struct Node {
int id;
};
// 定义邻接矩阵
class AdjacencyMatrix {
private:
std::vector<std::vector<int>> matrix; // 图的大小和边的值
public:
// 构造函数,初始化一个n x n的全零矩阵
AdjacencyMatrix(int n) : matrix(n, std::vector<int>(n, 0)) {}
// 添加边 (u, v),如果(u, v)之间有边,则置对应位置为1
void addEdge(int u, int v) {
matrix[u][v] = 1;
matrix[v][u] = 1; // 对于无向图,需要两边都记录
}
// 检查是否包含边 (u, v)
bool isConnected(int u, int v) const {
return matrix[u][v] == 1;
}
};
int main() {
AdjacencyMatrix graph(5); // 创建一个有5个顶点的图
graph.addEdge(0, 1);
graph.addEdge(1, 2);
graph.addEdge(3, 4);
// 输出连接情况
for (int i = 0; i < graph.matrix.size(); ++i) {
for (int j = i; j < graph.matrix[i].size(); ++j) {
if (graph.isConnected(i, j)) {
std::cout << "Edge between node " << i << " and " << j << ": Connected\n";
} else {
std::cout << "Edge between node " << i << " and " << j << ": Not connected\n";
}
}
}
return 0;
}
```
阅读全文