修改有向图的邻接表类定义,添加方法实现根据邻接表结构获取邻接矩阵结构。
时间: 2024-05-16 14:12:46 浏览: 84
好的,为了实现根据邻接表结构获取邻接矩阵结构,我们可以在原有的邻接表类定义中添加一个新的方法,具体实现如下:
```c++
#include <vector>
using namespace std;
class Graph {
private:
int V; // 图的顶点数
vector<vector<int>> adj; // 邻接表
public:
// 构造函数
Graph(int V) {
this->V = V;
adj.resize(V);
}
// 添加边
void addEdge(int v, int w) {
adj[v].push_back(w); // 添加 w 到 v 的邻接表中
}
// 获取邻接矩阵结构
vector<vector<int>> getAdjMatrix() {
vector<vector<int>> adjMatrix(V, vector<int>(V, 0)); // 初始化邻接矩阵为 0
for (int v = 0; v < V; ++v) {
for (int w : adj[v]) {
adjMatrix[v][w] = 1; // 标记邻接矩阵中的边
}
}
return adjMatrix;
}
};
```
在上面的代码中,我们添加了一个名为 `getAdjMatrix` 的方法,该方法返回一个二维的邻接矩阵结构,其中矩阵中的值为 1 表示对应的顶点之间存在一条边,否则为 0。
使用该方法可以方便地将邻接表结构转换为邻接矩阵结构,例如:
```c++
Graph g(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
vector<vector<int>> adjMatrix = g.getAdjMatrix();
```
在上面的代码中,我们首先创建了一个有向图 `g`,然后添加了若干条有向边,最后调用 `getAdjMatrix` 方法获取邻接矩阵结构。
阅读全文