邻接表创建无向图c++
时间: 2023-11-05 11:42:51 浏览: 156
要创建一个无向图的邻接表表示,可以使用C++中的链表或向量来实现。下面是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 边的结构体
struct Edge {
int src, dest;
};
// 无向图类
class Graph {
public:
// 构造函数,初始化图的顶点数
Graph(vector<Edge> const &edges, int numVertices) : adjList(numVertices) {
// 添加边到邻接表
for (auto &edge : edges) {
adjList[edge.src].push_back(edge.dest);
adjList[edge.dest].push_back(edge.src);
}
}
// 打印邻接表
void printAdjList() {
for (int i = 0; i < adjList.size(); i++) {
cout << "顶点 " << i << " 的邻接顶点: ";
for (int v : adjList[i]) {
cout << v << " ";
}
cout << endl;
}
}
private:
vector<vector<int>> adjList; // 邻接表
};
int main() {
vector<Edge> edges = {{0, 1}, {1, 2}, {2, 0}, {2, 1}, {3, 2}, {4, 5}, {5, 4}};
int numVertices = 6;
Graph graph(edges, numVertices);
graph.printAdjList();
return 0;
}
```
在上述代码中,我们首先定义了一个边的结构体 `Edge`,其中包含了边的起始顶点和目标顶点。然后,我们定义了一个无向图的类 `Graph`,其中包含一个私有成员变量 `adjList`,它是一个二维向量,用于存储图的邻接表。类的构造函数接受一组边和顶点数作为参数,并根据边的信息构建邻接表。`printAdjList` 函数用于打印邻接表的内容。
在 `main` 函数中,我们创建了一个图对象,并调用 `printAdjList` 函数来打印邻接表。
运行以上代码,将输出无向图的邻接表表示。
阅读全文