当前位置 : 主页 > 编程语言 > c语言 >

[Leetcode]链表的中间结点

来源:互联网 收集:自由互联 发布时间:2023-09-07
力扣链接 一般我们想到的会是 先遍历一次知道链表结点的个数后再除二,然后再遍历一次进行查找,但是这种做法需要遍历两次链表,消耗比较大,但是使用了快慢指针法就相对简单了,只需

力扣链接

[Leetcode]链表的中间结点_快慢指针

一般我们想到的会是 先遍历一次知道链表结点的个数后再除二,然后再遍历一次进行查找,但是这种做法需要遍历两次链表,消耗比较大,但是使用了快慢指针法就相对简单了,只需遍历一次.

快慢指针法:

[Leetcode]链表的中间结点_快慢指针_02

[Leetcode]链表的中间结点_快慢指针_03

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */



struct ListNode* middleNode(struct ListNode* head)
{
    struct ListNode* slow,*fast;//定义快慢两个指针
    slow = fast = head;
    while(fast && fast->next)//考虑到结点个数的奇偶
    {
        slow = slow->next;
        fast= fast->next->next;
    }
    return slow;


}
上一篇:C语言函数大全-- h 开头的函数
下一篇:没有了
网友评论