构造邻接矩阵代码 包含插入和删除顶点和边c++
时间: 2024-12-25 17:31:39 浏览: 16
在C++中,构造邻接矩阵是一个常用的数据结构来表示图,特别是无向图,其中每个节点都通过一个二维数组与其他节点相连。下面是创建、插入顶点和边的基本步骤:
```cpp
#include <vector>
// 定义邻接矩阵的模板类
template<typename T>
class AdjacencyMatrix {
private:
std::vector<std::vector<T>> matrix; // 存储节点及其连接的边
public:
// 构造函数,初始化一个空的邻接矩阵
AdjacencyMatrix(size_t vertices) : matrix(vertices, std::vector<T>()) {}
// 插入顶点
void insertVertex(size_t vertex) {
if (vertex >= matrix.size()) {
matrix.resize(vertex + 1);
}
}
// 插入边(假设无权重)
void insertEdge(size_t source, size_t destination) {
insertVertex(source); // 先检查并插入源节点
insertVertex(destination); // 同样插入目标节点
matrix[source][destination] = true; // 或者设置相应的值为1表示存在边
matrix[destination][source] = true; // 对于无向图,双向存储
}
// 删除顶点和相关的边(这里仅简单处理,实际操作可能需要更新其他相邻顶点的边)
void deleteVertex(size_t vertex) {
for (size_t i = 0; i < matrix[vertex].size(); ++i) {
matrix[vertex][i] = false;
}
matrix[vertex].clear();
for (size_t i = 0; i < matrix.size(); ++i) {
matrix[i][vertex] = false;
}
matrix.erase(matrix.begin() + vertex);
}
// 判断两个顶点之间是否有边
bool hasEdge(size_t source, size_t destination) const {
return matrix[source][destination];
}
};
// 示例使用
int main() {
AdjacencyMatrix<int> graph(5); // 创建一个包含5个顶点的图
graph.insertEdge(0, 1); // 添加边(0, 1)
graph.insertEdge(1, 2); // 添加边(1, 2)
// 简单删除示例(仅演示逻辑,实际可能需要考虑邻接顶点的调整)
graph.deleteVertex(1);
return 0;
}
```
阅读全文