快速寻找单链表的中间结点【C语言】

快速寻找单链表的中间结点【C语言】,第1张

1、思路:

(1)有两个指针同时从开头(首元结点)遍历

(2)一个快指针一次走两步,一个慢指针一次走一步

(3)快指针先到链表尾部,慢指针恰好到达链表中部(当链表长度为奇数时,慢指针指向的是链表中间结点;当链表长度为偶数时,慢指针指向的结点和慢指针指向结点的下一个结点都是链表的中间结点)

2、示例代码

//设立两个指针fast和slow,它们分别从head开始,fast走两步slow走一步,当fast走到最后一个结点的时候slow正好走到中点// 其中head为带头结点的链表的头指针
Node* searchMid(Node* head) {

    Node *fast = head, *slow = head;

    while (fast != NULL && fast->next != NULL) {
        fast = fast->next->next;
        slow = slow->next;
    }

    return slow;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/674892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存