love_programe 发表于 2015-10-31 23:24:45

小甲鱼老师提供的dfs的代码为什么那么怪异啊?

void DFS(MGraph G, int i)
{
        int j;
       
        visited = TRUE;                        //为什么我觉得应该是visited=true 啊!
        printf("%c ", G.vexs);       
        for( j=0; j < G.numVertexes; j++ )
        {
                if( G.arc==1 && !visited )
                {
                        DFS(G, j);                       
                }
        }
}

// 邻接矩阵的深度遍历操作
void DFSTraverse(MGraph G)
{
        int i;
       
        for( i=0; i < G.numVertexes; i++ )
        {
                visited = FALSE;                // 我认为这个循环应该放在函数的外面,因为若放在这个位置的话,那么明明已经被访问过的                   //结点就又被标记为false了,这样的话,不就无限递归下去了吗??
        }
       
        for( i=0; i < G.numVertexes; i++ )
        {
                if( !visited )               
                {
                        DFS(G, i);
                }
        }
}

无名侠 发表于 2015-11-1 00:50:08

TRUE 应该是一个宏定义。 是为了支持纯C的编译器

love_programe 发表于 2015-11-1 08:34:42

我的问题不是true或者false是什么的问题,我的问题已经写在代码里面了!!

DAY 发表于 2015-11-15 20:13:41

??????

dps521 发表于 2015-11-21 16:04:25

一起研究一下呵呵

不要犯二 发表于 2015-11-22 15:11:43

罗小白 发表于 2015-11-26 19:48:35

你看错了,他递归的是DFS,不是DFSTraverse,所以数组不会重复初始化
页: [1]
查看完整版本: 小甲鱼老师提供的dfs的代码为什么那么怪异啊?