給定一個單鏈表如何高效的找到鏈表的中點,要求算法復雜度O(N),如果讀者遇到過這樣的問題,那麼這個問題就迎刃而解了,驗證鏈表是否有環的問題,使用快慢指針變量鏈表,同理中點問題也可以使用快慢指針實現,慢指針一次移動一個節點,快節點一次移動兩個節點,快指針到達終點時,慢指針指向中點。
LinkNode *FindMid(LinkNode *p){ if(p == NULL){ return NULL; } LinkNode *fast = p; LinkNode *slow = p; while(fast && fast->next){ fast = fast->next->next; slow = slow->next; } return slow; }