小甲鱼老师提供的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);
}
}
} TRUE 应该是一个宏定义。 是为了支持纯C的编译器 我的问题不是true或者false是什么的问题,我的问题已经写在代码里面了!! ?????? 一起研究一下呵呵 你看错了,他递归的是DFS,不是DFSTraverse,所以数组不会重复初始化
页:
[1]