力扣(LeetCode) ——142. 环形链表 II(C语言)
题目:环形链表 II
解题思路:
通过创建两个指针,fast与slow。它们都位于链表头部。随后slow指针每次向后移动一个位置,而fast指针向后移动两个位置。如果链表中存在环,则fast指针最终将再次与slow指针在环中相遇。
最终代码:
typedef struct ListNode ListNode;
struct ListNode *detectCycle(struct ListNode *head) {ListNode* slow = head;ListNode* fast = head;while(fast){slow = slow->next;if(fast->next ==NULL){return NULL;}fast = fast->next->next;if(fast == slow){ListNode* cur = head;while(cur != slow){cur = cur->next;slow = slow->next;}return cur;}}return NULL;
}