鍊錶3 一次遍歷找到中間節點

2021-06-23 01:33:30 字數 537 閱讀 9197

一次遍歷就能夠找到中間節點,怎樣實現的呢?

讓我們直奔主題:

思想:  首先經過兩次遍歷可以找到中間的節點,這個是毋庸置疑的,第一次檢視個數,第二次直接找出來了。 但是我今天要記錄的就是怎樣通過一次的遍歷,就把中間的節點給找到!  其實,我們可以這樣:

定義兩個指標變數,當然是相應的結構體型別的啊,在判斷多餘兩個節點的前提下,乙個走一步,那麼另乙個就走兩步,中間時刻判別走的快的那個節點指標變數,看看其是否已經走向終點,若到了終點,那麼就輸出走的慢的那個節點的值。這樣就可以實現上訴要求;

**實現如下:

查詢單鏈表的中間節點,要求只能遍歷一次鍊錶

今天寫的函式是查詢單鏈表中的中間節點,但是要求只能遍歷一遍,如果不是這個條件來限制的話,可以先將鍊錶遍歷一遍,然後通過計數器來計算鍊錶中的資料個數然後通過迴圈來找中間的結點,但是要求只能遍歷一遍也就是說你在知道這個鍊錶中有多少個資料的同時就要知道他的中間資料是哪乙個。這樣的話就不能通過剛剛所說的方法...

查詢鍊錶的中間節點,只能遍歷一次陣列(C )詳細

方法及思想 因為要求只能遍歷一次鍊錶,那麼我們就可以邊遍歷邊查詢中間的節點。每遍歷一步,就找一次中間節點,然後移動只想中間節點的指標。此處借助鍊錶的長度來實現這個解法,我假設在鍊錶長度為偶數時,中間節點為length 2取下取整 參考二分法 include using namespace std s...

演算法(常用) 快速找到鍊錶的中間節點

思路 利用快慢指標思想,快指標每次走兩步,慢指標走一步。當快指標走到底的時候,滿指標指向的就是鍊錶的中間節點。需要注意的是,當鍊表長度為偶數字的時候,則慢指標指向的是中間偏右的節點,奇數的時候,指向的是中間節點。if head null head.next null return true list...