LeetCode——oj 链表的中间结点
思路:快慢指针
我们创建一个快指针和慢指针
慢指针一次走一步
快指针一次走两步
两个同时从头开始走,当快指针走完n个时,慢指针走了n/2步
所以此时的慢指针就是链表的中间结点
struct ListNode* middleNode(struct ListNode* head){
struct ListNode* fast=head,*slow=head;//快慢指针起初都是头结点
while(fast->next !=NULL && fast!=NULL)
{
slow=slow->next;
fast=fast->next;
if(fast->next !=NULL)
{
fast=fast->next;
}
}
return slow;
}
如果链表有偶数个结点呢?
我们这里的
就是为
共有 0 条评论