一个链表中包含环,请找出该链表的环的入口结点

来源:互联网 发布:b超三个数据看男女技巧 编辑:程序博客网 时间:2024/06/05 17:53

本题源自剑指offer

--------------------------------------------------------

1用俩个指针,遍历链表快指针和慢指针必定在环内相遇,然后可以让一个指针从头开始遍历,一个指针在相遇点遍历,俩个指针重合就是环的入口,

2也可以在相遇点求出环结点的个数,然后都头链表头开始遍历,让其中一个指针先走环节点步,第二个指针在出发。

ListNode* EntryNodeOfLoop(ListNode* pHead)    {        ListNode *slow = pHead;        ListNode *fast = pHead;        do{            if(fast == NULL || fast->next==NULL)                return NULL;            fast = fast->next->next;            slow = slow->next;           }while(slow != fast);        slow = pHead;        while(slow != fast){            slow = slow->next;            fast = fast->next;        }        return slow;       }


阅读全文
0 0
原创粉丝点击