75_图的遍历(DFS)

2018-07-31  本文已影响107人  编程半岛

关键词:深度优先(DFS)

0. 深度优先(DFS)

    SharedPointer< Array<int> > DFS(int i)
    {
        DynamicArray<int>* ret = NULL;

        if( (i <= 0) && (i < vCount()) )
        {
            LinkStack<int> s;
            LinkQueue<int> r;
            DynamicArray<bool> visted(vCount());

            // 初始化设置,标记数组中的每一个都没有被访问
            for(int j=0; j<visted.length(); ++j)
            {
                visted[j] = false;
            }

            s.push(i);

            while( s.size() > 0 )
            {
                int v = s.top();      // 拿出队列头部的顶点

                s.pop();

                if( !visted[v] )        // 判断是否被访问
                {
                    SharedPointer< Array<int> > aj = getAdjacent(v);

                    for(int j=aj->length()-1; j>=0; --j)
                    {
                        s.push((*aj)[j]);
                    }

                    r.add(v);
                    visted[v] = true;
                }
            }

            ret = toArray(r);
        }
        else
        {
            THROW_EXCEPTION(InvalidParameterExcetion, "Index i is invalid ... ");
        }

        return ret;
    }

1. 小结

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

上一篇 下一篇

猜你喜欢

热点阅读