图的邻接表存储c++语言
时间: 2023-11-05 15:05:13 浏览: 84
邻接表是一种图的存储结构,它使用链表来表示每个顶点与其相邻顶点的关系。下面是一个简单的邻接表存储的示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 定义图的邻接表存储结构
class Graph {
private:
int V; // 图的顶点数
vector<int> *adj; // 邻接表
public:
Graph(int V) {
this->V = V;
adj = new vector<int>[V];
}
// 添加边
void addEdge(int v, int w) {
adj[v].push_back(w);
adj[w].push_back(v); // 如果是无向图,需要添加反向边
}
// 输出邻接表
void printGraph() {
for (int v = 0; v < V; ++v) {
cout << "顶点 " << v << " 的邻接表为:";
for (auto w : adj[v]) {
cout << "-> " << w;
}
cout << endl;
}
}
};
int main() {
Graph g(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.printGraph();
return 0;
}
```
其中,Graph 类中的 adj 变量是一个 vector 数组,每个 vector 存储了与该顶点相邻的顶点。在 addEdge 方法中,我们需要将两个顶点之间的边添加到对应的邻接表中。
在 printGraph 方法中,我们遍历每个顶点的邻接表,并输出该顶点与其相邻顶点的关系。
阅读全文