利用双指针寻找链表中点

房东的猫 提交于 2020-01-06 15:51:43

利用双指针寻找链表中点

利用快慢指针(双指针)同时指向头节点,fast指针每次走两步,slow指针每次走一步,当fast指针到达链表尽头时,slow指针就处于链表中点处。

Node* middle(Node* head) {
    Node* fast, *slow;
    fast = slow = head;
    while (fast != null && fast.next != null) {
        fast = fast.next.next;
        slow = slow.next;
        return slow;//slow即在中间位置
}

如果链表长度是奇数时,此时slow 正好为中点,如果为偶数,那么slow位置是中间偏右。
明天考试,今天写的有点少…

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!