实现图的邻接表的存储编写程序,输入顶点的个数、边的个数、每个顶点的值、每一条边及其权值,建立带权无向图G的邻接表,并输出之。
时间: 2024-02-06 13:12:55 浏览: 32
好的,根据你的要求,我编写了如下程序:
```cpp
#include <iostream>
#include <vector>
using namespace std;
struct Edge {
int to;
int weight;
};
int main() {
int n, m;
cout << "请输入顶点的个数和边的个数:";
cin >> n >> m;
vector<int> vertex(n); // 存储每个顶点的值
vector<vector<Edge>> adj_list(n); // 存储邻接表
cout << "请依次输入每个顶点的值:";
for (int i = 0; i < n; i++) {
cin >> vertex[i];
}
cout << "请依次输入每一条边的起点、终点和权值:" << endl;
for (int i = 0; i < m; i++) {
int from, to, weight;
cin >> from >> to >> weight;
// 添加无向边
Edge e1 = {to, weight};
adj_list[from].push_back(e1);
Edge e2 = {from, weight};
adj_list[to].push_back(e2);
}
// 输出邻接表
for (int i = 0; i < n; i++) {
cout << vertex[i] << ": ";
for (auto e : adj_list[i]) {
cout << vertex[e.to] << "(" << e.weight << ") ";
}
cout << endl;
}
return 0;
}
```
程序中,我们首先读入顶点个数和边的个数,然后分别使用 `vector` 存储每个顶点的值和邻接表。接着,我们依次读入每个顶点的值和每条边的起点、终点和权值,并在邻接表中添加相应的边。最后,我们遍历邻接表,并输出每个顶点的邻居节点和对应的权值,即可得到带权无向图的邻接表。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)