检查有环算法
发布时间: 2023-07-31 17:06:01
Ⅰ c语言,有向图里如何检测是否有环
1、为其定义一个名称,就叫【StackEmpty】。
Ⅱ c++判断有向图是否有环的算法
通常是用邻接矩阵来表示一个有向图。从图中的每一个点出发,用深度优先遍历的算法,如果能够回到出发点,图中就是有环的;如果每一个点都不能回到出发点,那么它就是无环的。
Ⅲ C中怎么判断链表中是否有环
用两个指针来遍历这个单向链表,第一个指针p1,每次走一步;
第二个指针p2,每次走两步;
当p2 指针追上p1的时候,就表明链表当中有环路了。
A.判断链表是否有环
设置两个指针p1和p2,初始值均指向链表头,p1每次向前走一步,而p2每次向前走两步。
如果链表有环,则p2先进入环里,而p1后进入环里,两个指针在环中必定相遇。
如果p1与p2没有相遇,p2遍历到链表的尾部,则表示链表没有环。
B.链表有环,确定环的入口点
设置p1指针指向链表头,p2指向相遇点,每次两个指针都是只走一步,两个指针必定相遇,
则相遇第一点为环入口点。
C.计算环长
在环的入口点设置一个指针和一个计数器,让这个指针在环里面走,每走一步,计数器就加1,
当这个指针回到环的入口点的时候,计数器的值就是环长。
例如:
int testLinkRing(Link *head)
{
Link *t1=head,*t2=head;while( t1->next && t2->next)
{
t1 = t1->next;if (NULL == (t2 = t2->next->next))return 0; // 无环 if (t1 == t2)return 1;
}
return 0;
}
热点内容