/* * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; 链表中有环不一定指向头结点。 快慢指针思想一个走一步一个走两步,有环最终会相遇 重点:p->next!=NULL,否则会报错。 */ class Solution { public: bool hasCycle(ListNode *head) { ListNode *p=head,*q=head; while(p&&p->next) // p的下一个不能为空否则p->next->next会报错 { p=p->next->next; q=q->next; if(p==q)return true; } return false; } };