c++实现动态输入实现无向图结构 并在控制窗口展示图的结构
时间: 2024-05-06 17:15:27 浏览: 12
要实现动态输入无向图结构,可以使用邻接表来存储图中的边和节点。邻接表是一种链式存储结构,对于每个节点,我们都可以维护一个链表,表示与该节点相连的边。
下面是一份示例代码,展示了如何通过控制台输入节点和边,构建无向图并展示其结构:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Edge {
int from;
int to;
int weight;
};
class Graph {
public:
Graph(int n) {
this->n = n;
adj.resize(n);
}
void addEdge(int from, int to, int weight = 1) {
Edge e = {from, to, weight};
adj[from].push_back(e);
adj[to].push_back(e);
}
void showStructure() {
for (int i = 0; i < n; i++) {
cout << i << ": ";
for (auto& e : adj[i]) {
int j = i ^ e.from ^ e.to;
cout << j << " ";
}
cout << endl;
}
}
private:
int n;
vector<vector<Edge>> adj;
};
int main() {
int n, m;
cin >> n >> m;
Graph g(n);
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
g.addEdge(u, v);
}
g.showStructure();
return 0;
}
```
在这个例子中,我们首先从控制台输入节点数 `n` 和边数 `m`。然后,我们循环读入每条边,调用 `addEdge` 方法将其添加到邻接表中。最后,我们调用 `showStructure` 方法展示图的结构。对于每个节点,我们遍历其相邻的边,输出连接的节点编号。
需要注意的是,这个示例代码中只考虑了无向图,如果需要处理有向图,需要在 `addEdge` 方法中指定边的方向。此外,如果需要支持权重,可以在 `Edge` 结构体中添加 `weight` 字段,并在 `addEdge` 方法中传入权重值。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.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)