设置两个指针(fast,slow),初始值都指向头,slow每次前进一步,fast每次前进两步,如果链表存在环,则fast必定比slow先进入环,两个指针必定相遇。(如果fast先行头到尾部为NULL,则无环链表)。代码
bool isExitLoop(slist *head)
{
slist *slow = head, *fast = head;
while(fast && fast->next) {
slow = slow->next;
fast = fast->next->next;
if(slow == fast) break;
}
return !(fast == NULL || fast->next == NULL);
}