利用双指针寻找链表中点
利用快慢指针(双指针)同时指向头节点,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位置是中间偏右。
明天考试,今天写的有点少…
来源:CSDN
作者:邜玥
链接:https://blog.csdn.net/weixin_45678985/article/details/103846425