领接表的深度优先遍历代码c++
时间: 2024-12-22 07:09:22 浏览: 8
领接表是一种图数据结构的表示方法,通常用于稀疏图,其中每个节点包含一个指向其邻接节点列表的指针。在C++中,使用深度优先搜索(DFS)遍历这种图可以采用递归或栈的方式。以下是使用递归的简单DFS代码示例:
```cpp
#include <iostream>
#include <vector>
// 结点结构体
struct Node {
int value;
std::vector<Node*> neighbors; // 邻接节点列表
};
void dfs(Node* node, bool visited[]) { // 递归函数
if (node != nullptr && !visited[node->value]) { // 如果节点未访问过
visited[node->value] = true; // 标记为已访问
std::cout << node->value << " "; // 访问节点值
for (Node* neighbor : node->neighbors) { // 遍历邻居
dfs(neighbor, visited); // 递归遍历邻居节点
}
}
}
int main() {
// 初始化你的图节点及邻接关系
Node nodes[] = { ... };
int num_nodes = sizeof(nodes) / sizeof(nodes[0]);
// 初始化已访问数组
bool visited[num_nodes] = {false};
// 开始深度优先遍历
for (Node* node : nodes) {
if (!visited[node->value]) {
dfs(node, visited);
}
}
return 0;
}
```
在这个例子中,`dfs()` 函数会从给定的起始节点开始,标记已访问过的节点,并递归地探索它们的邻居节点。`visited` 数组用于跟踪节点是否已被访问。
阅读全文