其他分享
首页 > 其他分享> > 链表是否有环

链表是否有环

作者:互联网

class Solution {
public:
    bool hasCycle(ListNode *head) {
        // 首先判断链表是否为空
        if(head == NULL) return false;

        // 定义快慢指针
        ListNode *slow = head;

        // 其实快指针也可以和慢指针同起点,只要快指针跑得比满指针快就行
        ListNode *fast = head->next;

        while(1)
        {
            if(fast != slow && fast !=NULL && fast->next !=NULL ) // 如果快指针还没有跑完,并且还没有遇到交点,就继续跑
            {
                slow=slow->next ;
                fast=fast->next->next;
            }
            else break;
        }
        // 跳出循环的条件可能是链表跑完了还没有环,还有可能是有环

        if (fast == slow) // 如果有环,就返回true
        return true;

        // 没有环就返回false
        return false;

    }
};

标签:head,slow,是否,fast,next,链表,有环,指针
来源: https://blog.csdn.net/qq_43403759/article/details/120601024