快速尋找單鏈表的中間結點

思路:spa

  1. 有兩個指針同時從開頭(首元結點)遍歷
  2. 一個快指針一次走兩步,一個慢指針一次走一步
  3. 快指針先到鏈表尾部,滿指針剛好到達鏈表中部(當鏈表長度爲奇數時,滿指針指向的是鏈表中間結點;當鏈表長度爲偶數時,滿指針指向的結點和滿指針指向結點的下一個結點都是鏈表的中間結點)
//設立兩個指針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; }
相關文章
相關標籤/搜索