数据结构-leetcode-环形链表Ⅱ

有了上一篇的基础,做这一篇会相对容易些,没看上一篇的一定要去看看再来。

 先看题:

数据结构-leetcode-环形链表Ⅱ_第1张图片

解题图解: 

1.首先要使快慢指针相遇

数据结构-leetcode-环形链表Ⅱ_第2张图片 2.

数据结构-leetcode-环形链表Ⅱ_第3张图片

 代码如下:

struct ListNode *detectCycle(struct ListNode *head) {
    struct ListNode * fast=head;
    struct ListNode * low=head;
    while(fast!=NULL&&fast->next!=NULL){
        low=low->next;
        fast=fast->next->next;
        if(low==fast){
            break;
        }
    }
    if(fast==NULL||fast->next==NULL)return NULL;
    low=head;
    while(fast!=low){
        low=low->next;
        fast=fast->next;
    }
    return fast;
}

你可能感兴趣的:(C,数据结构,链表,leetcode)