1
2 //检测链表中是否有环经典作法
3 //用两个指针遍历链表,一个指针每次走一步,另一个指针一次走两步,当第二个指针追> 上第一个指针的时候,说明此链表有环
4 int TestLiskLoop(Link *head)
5 {
6 Link *p = head;
7 Link *q = head;
8
9 while(p->next&&q->next)
10 {
11 p = p->next;
12 if(NULL == (q = q->next->next))
13 return 0;
14 if(p == q)
15 return 1;
16 }
17 return 0;
18 }
~
2 //检测链表中是否有环经典作法
3 //用两个指针遍历链表,一个指针每次走一步,另一个指针一次走两步,当第二个指针追> 上第一个指针的时候,说明此链表有环
4 int TestLiskLoop(Link *head)
5 {
6 Link *p = head;
7 Link *q = head;
8
9 while(p->next&&q->next)
10 {
11 p = p->next;
12 if(NULL == (q = q->next->next))
13 return 0;
14 if(p == q)
15 return 1;
16 }
17 return 0;
18 }
~