题目描述:876. 链表的中间结点 - 力扣(LeetCode)
给你单链表的头结点
head
,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
题解思路:
利用快慢指针:当快指针一次移动两个节点、慢指针一次移动一个节点,当移动次数相同,快指针移动的距离是慢指针移动距离的二倍,所以当快指针移动到链表末尾时,慢指针刚好移动到链表的中间节点。
代码:
struct ListNode* middleNode(struct ListNode* head)
{
struct ListNode* slow = head, *fast = head;
while(fast && fast->next)
{
slow=slow->next;
fast=fast->next->next;
}
return slow;
}
本次内容到此结束了!如果你觉得这篇博客对你有帮助的话 ,希望你能够给我点个赞,鼓励一下我。感谢感谢……