天天看点

C++快慢指针:链表中间值

算法

1.设置fast,slow两个指针指向链表头结点

2.fast每次走两步,slow每次走一步

3.当fast为空或fast->next为空时结束循环

4.此时slow指向的结点就是链表的中间结点

T getmid()
    {
        Node* fast = head;
        Node* slow = head;
        while(fast!=nullptr&&fast->next!=nullptr){
            fast = fast->next->next;
            slow = slow->next;
        }
        return slow->x;
    }
           

继续阅读