写出dev c++ 可运行的 以邻接表的形式创建一个无向图 的代码
时间: 2024-02-05 07:10:37 浏览: 81
以下是使用邻接表实现无向图的代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 定义边结构体
struct Edge {
int to; // 目标节点
int weight; // 权重
Edge(int t, int w) : to(t), weight(w) {} // 构造函数
};
// 定义邻接表
vector<Edge> adj[100];
// 添加无向边
void addEdge(int u, int v, int weight) {
adj[u].push_back(Edge(v, weight));
adj[v].push_back(Edge(u, weight));
}
int main() {
int n, m; // n为节点数,m为边数
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v, weight;
cin >> u >> v >> weight;
addEdge(u, v, weight); // 添加边
}
// 遍历所有节点,输出其邻接表
for (int u = 1; u <= n; u++) {
cout << "Node " << u << " is adjacent to: ";
for (auto e : adj[u]) {
cout << e.to << "(" << e.weight << ") ";
}
cout << endl;
}
return 0;
}
```
在该代码中,我们使用了一个邻接表数组 `adj` 来存储每个节点的邻接表。在 `addEdge` 函数中,我们向节点 `u` 和节点 `v` 的邻接表中分别添加一条边,权重为 `weight`。最后,我们遍历所有节点,输出其邻接表。
需要注意的是,本示例中节点编号从 1 开始,如果您的节点编号从 0 开始,请相应地修改代码。
阅读全文