【思路】 快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表其实位置开始运行,
**如果链表带环则一定会在环中相遇,**否则快指针率先走到链表的末尾。比如:陪女朋友到操作跑步减肥。
bool hasCycle(struct ListNode *head) {
struct ListNode* slow=head,*flast=head;
while(flast&&flast->next)//如果链表不是环,那么奇数的时候flast=NULL时停止循环,偶数时flast->next=NULL时停止循环,(反正只要代码会出这个while循环就说明链表不是环)
{
flast=flast->next->next;
slow=slow->next;
if(flast==slow)
{
return true;
}
}
return false;
}