C++以邻接矩阵为存储结构,创建有向图;
时间: 2025-07-06 16:55:43 浏览: 4
### 使用C++基于邻接矩阵构建有向图
为了使用C++根据邻接矩阵来构建有向图,可以通过定义类 `DirectedGraph` 来封装图的相关操作。下面是一个简单的实现方案。
#### 类定义与成员变量初始化
```cpp
#include <iostream>
#include <vector>
class DirectedGraph {
private:
int vertexCount; // 顶点数量
std::vector<std::vector<int>> adjacencyMatrix; // 邻接矩阵
public:
// 构造函数用于初始化图
DirectedGraph(int vertices);
// 添加边的方法
void addEdge(int from, int to);
// 打印邻接矩阵的内容
void display();
};
```
此部分代码展示了如何通过私有属性保存节点数目以及采用二维向量形式表示的邻接矩阵[^1]。
#### 构造函数的具体实现
构造函数接收参数vertices代表图中含有的结点总数,并据此分配适当大小的空间给adjacencyMatrix数组并将其所有元素置零。
```cpp
// 初始化图对象时设置顶点数并将邻接矩阵设为全0
DirectedGraph::DirectedGraph(int vertices): vertexCount(vertices), adjacencyMatrix(std::vector<std::vector<int>>(vertexCount, std::vector<int>(vertexCount, 0))) {}
```
这段代码实现了带有参数列表的构造器,它接受一个整型参数vertices指定图内的顶点个数,并利用这些信息完成对adjacencyMatrix的初始化工作[^2]。
#### 增加边的操作
当需要在一个已经存在的图里增加一条新的边时,则只需更新对应位置上的权重值即可(这里假设是非负权值的情况),如果不存在这条边则默认赋初值为1或其他自定义数值;反之如果有特殊需求也可以传递具体的权重作为第三个可选参数传入addEdge()方法内处理。
```cpp
void DirectedGraph::addEdge(int from, int to){
if (from >= 0 && from < vertexCount && to >= 0 && to < vertexCount) {
adjacencyMatrix[from][to] = 1;
}
}
```
上述逻辑确保了只有合法范围内的索引才会被用来修改邻接矩阵中的相应条目[^3]。
#### 显示当前状态下的邻接关系
最后提供了一个辅助性的display()接口方便开发者查看此时此刻所维护的数据结构内部究竟存有哪些连通情况:
```cpp
void DirectedGraph::display(){
for (int i = 0 ;i<vertexCount;i++){
for (int j=0;j<vertexCount;j++)
std::cout << adjacencyMatrix[i][j]<<" ";
std::cout<<'\n';
}
}
```
以上程序片段能够逐行输出整个邻接矩阵的信息以便于调试或验证算法正确性[^4]。
阅读全文
相关推荐

















