返回链表的中间结点
返回鏈表的中間結點
給定一個帶有頭結點 head 的非空單鏈表,返回鏈表的中間結點。如果有兩個中間結點,則返回第二個中間結點。
用快慢指針來寫:
Node* Fast; Node* Slow;先初始化,讓Fast和Slow都指向第一個鏈表節點,然后讓Fast每次移動兩位,Slow每次移動一位,這樣,Fast的路程就是Slow的兩倍,當Fast到鏈表的末尾的時候,Slow也就到了鏈表的中間位置了。我們只需要返回Slow就可以了。
結束的條件就是當Fast為NULL或者Fast->next為NULL。
核心代碼如下:
//初始化 Node* Fast=head; Node* Slow=head; //快慢指針操作 while(Fast&&Fast->next){ Fast=Fast->next->next; Slow=Slow->next; }當然還要考慮鏈表的個數,可能為奇數,也可能為偶數。
當鏈表為奇數時:
當鏈表為偶數時:
總結
- 上一篇: Vertus fluid mask中文版
- 下一篇: 关于通过邮箱找回密码的实现