好的,所以出于某种原因。通过开发一种算法来检测无向图上的简单循环,我遇到了麻烦。我一直在使用深度优先搜索,是的,没有访问过。虽然由于某种原因,我总会得到一条路,即使不应该是一条路。我一直在使用
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枚举类型的数组,但我想稍后存储其他信息。很抱歉格式错误,这个网站仍然是新的,代码按钮似乎并不总是格式化我的帖子。