c++ 邻接表无向图
时间: 2023-07-01 10:23:00 浏览: 107
下面是一个简单的C++代码示例,用邻接表表示无向图:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 邻接表存储无向图
class Graph {
public:
Graph(int n) : adjList(n) {}
// 添加一条边
void addEdge(int u, int v) {
adjList[u].push_back(v);
adjList[v].push_back(u);
}
// 输出图的邻接表
void printAdjList() {
for (int i = 0; i < adjList.size(); i++) {
cout << i << ": ";
for (int j = 0; j < adjList[i].size(); j++) {
cout << adjList[i][j] << " ";
}
cout << endl;
}
}
private:
vector<vector<int>> adjList; // 邻接表
};
int main() {
Graph g(5); // 创建一个有5个顶点的图
g.addEdge(0, 1);
g.addEdge(0, 4);
g.addEdge(1, 2);
g.addEdge(1, 3);
g.addEdge(1, 4);
g.addEdge(2, 3);
g.addEdge(3, 4);
g.printAdjList();
return 0;
}
```
输出结果为:
```
0: 1 4
1: 0 2 3 4
2: 1 3
3: 1 2 4
4: 0 1 3
```
其中,第i行表示顶点i的邻接表。例如,第0行表示顶点0的邻接表为1和4,即顶点0和顶点1、4相邻。
阅读全文