基于有向图的邻接表存储结构实现求顶点入度的函数的代码。用c++实现
时间: 2024-03-24 10:40:32 浏览: 18
下面是基于有向图的邻接表存储结构实现求顶点入度的函数的 C++ 代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义图的邻接表存储结构
struct Graph {
int V; // 图的顶点数
vector<vector<int>> adj; // 存储每个顶点的出边
};
// 求图中每个顶点的入度
vector<int> findInDegrees(Graph& G) {
vector<int> inDegrees(G.V, 0); // 初始每个顶点入度为0
// 统计每个顶点的入度
for (int v = 0; v < G.V; ++v) {
for (int u : G.adj[v]) {
++inDegrees[u];
}
}
return inDegrees;
}
int main() {
// 创建一个有向图
Graph G;
G.V = 5;
G.adj = {{1, 2}, {3}, {3, 4}, {4}, {}};
// 求每个顶点的入度
vector<int> inDegrees = findInDegrees(G);
// 输出每个顶点的入度
for (int v = 0; v < G.V; ++v) {
cout << "Vertex " << v << " has in-degree " << inDegrees[v] << endl;
}
return 0;
}
```
在这个代码中,我们首先定义了一个结构体 `Graph` 来存储有向图的邻接表表示,其中 `V` 表示图的顶点数,`adj` 是一个 `vector` 数组,其中 `adj[v]` 存储了顶点 `v` 的所有出边。
然后我们实现了一个函数 `findInDegrees`,该函数接收一个 `Graph` 对象作为参数,并返回一个 `vector` 数组,其中第 `i` 个元素表示顶点 `i` 的入度。在函数内部,我们遍历每个顶点的出边,统计每个顶点的入度,并将结果保存在一个 `vector` 数组中返回。
最后,在 `main` 函数中,我们创建了一个有向图,并调用 `findInDegrees` 函数求出每个顶点的入度,并将结果输出。