邻接表的深度优先遍历非递归
时间: 2023-11-20 17:57:05 浏览: 132
邻接表表示的图的深度优先遍历
5星 · 资源好评率100%
邻接表的深度优先遍历非递归可以使用栈来实现。具体步骤如下:
1. 创建一个栈,将起始节点入栈,并将其标记为已访问。
2. 当栈不为空时,取出栈顶元素,输出该节点的值。
3. 遍历该节点的所有邻居节点,如果邻居节点未被访问,则将其入栈并标记为已访问。
4. 重复步骤2和3,直到栈为空。
下面是C++代码实现:
```cpp
void DFS_non_recursive(Graph &g, VNode vNode) {
stack<VNode> s;
s.push(vNode);
g.vNode[vNode.index].visited = true;
while (!s.empty()) {
VNode v = s.top();
s.pop();
cout << v.data << " ";
ArcNode* p = v.firstArc;
while (p != NULL) {
if (!g.vNode[p->adjvex].visited) {
s.push(g.vNode[p->adjvex]);
g.vNode[p->adjvex].visited = true;
}
p = p->next;
}
}
}
```
阅读全文