建立图的邻接表存储结构,并将邻接表输出代码c++
时间: 2024-12-01 09:11:14 浏览: 57
在C++中,建立图的邻接表通常会涉及到动态内存分配和链表数据结构。下面是一个简单的无向图邻接表的实现示例,包括创建邻接表和输出节点的邻接节点。
首先,我们定义一个Node类来表示图中的每个顶点及其对应的邻接链表:
```cpp
#include <vector>
using namespace std;
// 定义图的节点结构体
struct Node {
int vertex; // 节点值
vector<int> adjList; // 存储该节点的邻居
};
```
接下来,我们构建邻接表结构:
```cpp
// 创建并初始化邻接表表示图的类
class Graph {
private:
int vertices;
vector<Node*> nodes;
public:
Graph(int v) : vertices(v) { // 初始化顶点数
nodes.resize(vertices);
for (int i = 0; i < vertices; i++) {
nodes[i] = new Node(i);
}
}
// 添加边(连接两个顶点)
void addEdge(int src, int dest) {
nodes[src]->adjList.push_back(dest); // 添加dest到src的邻接列表
nodes[dest]->adjList.push_back(src); // 添加源到目的的邻接列表,因为图是非定向的
}
~Graph() { // 析构函数,释放所有节点
for (int i = 0; i < vertices; i++) {
delete nodes[i];
}
}
// 打印邻接表
void printAdjacencyList() {
for (int i = 0; i < vertices; i++) {
cout << "Vertex " << i << ": ";
for (int j : nodes[i].adjList) {
cout << j << " ";
}
cout << endl;
}
}
};
```
创建图并打印邻接表的示例:
```cpp
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.printAdjacencyList();
return 0;
}
```
当你运行这段代码时,它将打印出每个顶点及其相应的邻接节点。
阅读全文