通过数据结构编写代码(44) 检测无向图是否存在环
发布时间
阅读量:
阅读量
在研读严蔚敏所著《数据结构》一书第7.5小节时,书中提到“判断有向图中是否存在环路相较于无向图更为复杂。对于无向图而言,在进行深度优先遍历的过程中,若发现回边(即指向已被访问过的顶点的边),则可以确定存在环路”。对此内容理解不够清晰,因此通过网络搜索进行了进一步查阅。
获得启发后,决定记录相关算法与思路,便于日后回顾。
思路如下:
-
对于一个包含n个顶点和e条边的无向图,当边数e大于等于顶点数n时,必然存在环路。
-
若边数e小于顶点数n,则需进行深度优先遍历,并将父节点作为参数传递进去。若在遍历过程中遇到某个已被访问的节点,并且该节点不是当前节点的父节点,则说明存在环路。
代码实现如下:
void dfsCycle(Graph g,int curent,int parent,bool * isVisited,bool * is){
isVisited[curent] = true;
ArcNode * next = g.list[curent].head->nextArc;
for (; next != NULL; next = next->nextArc)
{
int index = next->adjVex;
if (isVisited
全部评论 (0)
还没有任何评论哟~
