//DFS非递归算法---------------->类似于树的中序遍历
void DFSTraverse(Graph G)
{
for(int i = 0;i < G.vexnum ;i++) //将每个顶点标记未访问
{
visited[i] = false;
}
for(int i = 0;i< G.vexnum;i++) //防止出现不相连的图出现
{
if(visited[i]==false)
DFS(G,i);
}
}
void DFS(Graph G,int v) //非递归DFS算法核心部分
{
InitStack(S); //初始化一个栈,借助栈实现
Push(S,v); //将首个顶点压入栈底
while(!IsEmpty(S)) //栈不空,则一直循环
{
Pop(S,v); //将栈顶弹出
visit(v); //visit()函数用来表示访问顶点
visited[v] = true; //标记顶点已经访问
for(w = FirstNeighbor(G,v);w >= 0; w = NextNeighbor(G,v,w)) //
{
if(!visited[w]) //如果该顶点未被访问
{
Push(S,w); //将该顶点压入栈
visit(w); //访问顶点
visited[w] = true; //标记已访问顶点
}
}
}
}
DFS非递归算法
原文作者:递归算法
原文地址: https://blog.csdn.net/qq_28311921/article/details/78137367
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/qq_28311921/article/details/78137367
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。