问题:

鉴于一个列表,推断该列表环的存在。

分析:


这个问题是见的非常多的题目,问题本身而言,技巧性非常强,或者说思路非常巧妙,这里要说的不是这个题目本身。而是说这样的技巧。在非常多的地方是用的到的,比方,在寻找单链表的中间节点的时候,就能够用这样的形式,一个走两步,一个走一步的形式,来获得中间节点。


//



bool hasCycle(ListNode *head) {
if(head == NULL)
return false;
ListNode *fast = head;
ListNode *slow = head;
while(NULL != fast && NULL != fast->next)
{
fast = fast->next->next;
slow = slow->next;
if(slow == fast)
return true;
}
return false;
}