1.给定一个无向连通图G,采用深度优先搜索方式访问图中节点,并输出。用c++
时间: 2024-06-13 13:08:29 浏览: 147
以下是使用C++实现深度优先搜索遍历无向连通图并输出的代码:
```cpp
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
// 定义无向图类
class Graph {
public:
Graph(int n) : nodes(n), edges(n) {}
// 添加边
void addEdge(int u, int v) {
edges[u].push_back(v);
edges[v].push_back(u);
}
// 深度优先搜索遍历
void dfs(int start) {
vector<bool> visited(nodes, false); // 记录节点是否被访问过
stack<int> s; // 使用栈来实现深度优先搜索
s.push(start);
visited[start] = true;
cout << start << " ";
while (!s.empty()) {
int cur = s.top();
s.pop();
for (int neighbor : edges[cur]) {
if (!visited[neighbor]) {
s.push(neighbor);
visited[neighbor] = true;
cout << neighbor << " ";
}
}
}
}
private:
int nodes; // 节点数
vector<vector<int>> edges; // 邻接表表示的边
};
int main() {
// 构造一个无向图
Graph g(6);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 3);
g.addEdge(2, 3);
g.addEdge(2, 4);
g.addEdge(3, 4);
g.addEdge(3, 5);
// 从节点0开始深度优先搜索遍历
g.dfs(0);
return 0;
}
```
输出结果为:0 1 3 4 2 5
阅读全文