devc++下,实现图的深度优先周游代码
时间: 2024-12-29 11:31:39 浏览: 13
在Dev-C++环境下,实现图的深度优先搜索(DFS)可以使用邻接表或邻接矩阵数据结构。这里提供一个基于邻接表的简单示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 图节点
struct Node {
int value;
vector<Node*> neighbors;
};
void DFS(Node* node, bool visited[], int graph[]) {
// 标记当前节点已访问
visited[node->value] = true;
cout << node->value << " ";
// 遍历邻居节点并递归访问未访问过的节点
for (Node* neighbor : node->neighbors) {
if (!visited[neighbor->value]) {
DFS(neighbor, visited, graph);
}
}
}
int main() {
int numVertices; // 图的顶点数
cout << "Enter number of vertices: ";
cin >> numVertices;
Node* nodes[numVertices]; // 初始化所有节点
// 填充节点值和邻居
for (int i = 0; i < numVertices; ++i) {
nodes[i] = new Node();
cout << "Enter vertex " << i+1 << "'s value: ";
cin >> nodes[i]->value;
}
// 如果需要输入边,这里可以添加获取邻接列表的功能
// 例如:cin >> nodes[vertex].neighbors; 或者使用数组或其他数据结构
bool visited[numVertices]; // 记录每个节点是否访问过
memset(visited, false, sizeof(visited)); // 初始设置所有节点未访问
// 开始深度优先搜索
for (int i = 0; i < numVertices; ++i) {
if (!visited[i]) {
DFS(nodes[i], visited, nullptr); // 第一个节点作为起点
}
}
return 0;
}
```
在这个例子中,我们首先创建一个图,然后初始化每个节点及其邻居。`DFS`函数负责实际的深度优先遍历。注意,如果你的图是通过边的连接表示,你需要另外处理输入邻接信息的部分。
阅读全文