注册 登录
编程论坛 C++教室

非递归深度优先遍历怎么写

云的一边 发布于 2014-11-27 12:06, 407 次点击
非递归深度优先遍历怎么写(1)栈S初始化;visited[n]=0;

 (2)访问顶点v;visited[v]=1;顶点v入栈S

 (3)while(栈S非空)

            x=栈S的顶元素(不出栈);

            if(存在并找到未被访问的x的邻接点w)

                    访问w;visited[w]=1;

                    w进栈;

            else

                     x出栈;
2 回复
#2
云的一边2014-11-27 12:08
void DFS(AdjGraph *G,int v)
{
    int w;
  ArcNode *p;

    printf("%d",v);
    visited[v]=1;
    p=G->adjlist[v].firstarc;    while(p!=NULL)
    {
        w=p->adjvex;
        if(visited[w]==0)
        DFS(G,w);
        p=p->nextarc;
    }
}
#3
云的一边2014-11-27 12:09
回复 楼主 云的一边
这个是递归的,我不会写非递归的求解
1