数据结构 C++实现 有向图的邻接表存储,并输出 顶点的出度和入度
时间: 2023-12-03 17:46:21 浏览: 122
下面是一个简单的 C++ 实现,使用邻接表存储有向图,并输出每个顶点的出度和入度:
```cpp
#include <iostream>
#include <vector>
using namespace std;
class Graph {
private:
int V; // 图中顶点的数量
vector<vector<int>> adj; // 邻接表
public:
// 构造函数
Graph(int V) {
this->V = V;
adj.resize(V);
}
// 添加一条从 u 到 v 的边
void addEdge(int u, int v) {
adj[u].push_back(v);
}
// 输出每个顶点的出度和入度
void printDegree() {
for (int i = 0; i < V; i++) {
int out_degree = adj[i].size(); // 出度
int in_degree = 0; // 入度
// 计算入度
for (int j = 0; j < V; j++) {
for (auto k : adj[j]) {
if (k == i) {
in_degree++;
break;
}
}
}
cout << "顶点 " << i << " 的出度为 " << out_degree << ",入度为 " << in_degree << endl;
}
}
};
int main() {
// 创建图
Graph g(5);
g.addEdge(0, 1);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(3, 4);
// 输出每个顶点的出度和入度
g.printDegree();
return 0;
}
```
输出结果如下:
```
顶点 0 的出度为 1,入度为 1
顶点 1 的出度为 1,入度为 1
顶点 2 的出度为 1,入度为 1
顶点 3 的出度为 1,入度为 0
顶点 4 的出度为 0,入度为 1
```
阅读全文