无向图简单循环

时间:2013-09-11 15:39:02

标签: c algorithm

好的,所以出于某种原因。通过开发一种算法来检测无向图上的简单循环,我遇到了麻烦。我一直在使用深度优先搜索,是的,没有访问过。虽然由于某种原因,我总会得到一条路,即使不应该是一条路。我一直在使用

Finding all cycles in a directed graph

作为指南虽然它对我不起作用。

我的DFS代码:

void depthFirstSearch(struct vertex *edgeList[], int sourceVertex, struct vertexInfo *theVertexListInfo[]){
    int i;
    struct vertex *aVptr;
    aVptr = edgeList[sourceVertex];

    if(theVertexListInfo[sourceVertex]->visitStatus == true){
        //printf("Found a path source = %d.\n",sourceVertex);
        return;
    }else{
        theVertexListInfo[sourceVertex]->visitStatus = true; 
    }

    printf("aVptr->key = %d\n", aVptr->vertexKey);
    if(aVptr != NULL){
        while(aVptr != NULL){
            depthFirstSearch(edgeList, aVptr->vertexKey, theVertexListInfo);
            aVptr = aVptr->nextItem;
        }
    }
    theVertexListInfo[sourceVertex]->visitStatus = false;

    return;
}

我的theVertexListInfo是一个只存储已访问的结构作为布尔值的结构。我知道我可以把它作为boolean枚举类型的数组,但我想稍后存储其他信息。很抱歉格式错误,这个网站仍然是新的,代码按钮似乎并不总是格式化我的帖子。

0 个答案:

没有答案