難度:兩星
單鏈表求中間節點分為兩種情況:
1 單鏈表長度為奇數時,如abcde,那麼中間節點就是c。
2 單鏈表長度為偶數時,如abcdef,那麼中間節點有兩個c和d。本文簡單起見就取第二個中間節點。
思想:其實思想很簡單,其實就是跟《判斷單鏈表儲存的字串是否為「回文串」》中求中間節點的方法一模一樣,使用快慢指標來求解。
理解了思想,**就很容易實現了,這裡直接貼上來。
package com.coding.studiodemo.linklist;
/**求單鏈表的中間節點:
如果長度為奇數,則求出中間節點
abcde--->c
如果長度為偶數,則求出第二個中間節點
abcdef--->d
*/public class linkmiddle
return slow;
}public static void main(string args)
}
package com.coding.studiodemo.linklist;
/** * 定義單鏈表的節點
* @author jeffsheng
*/public class linknode
public string getdata()
public linknode getnext()
public void setnext(linknode next)
@override
public string tostring()
}
這裡不作過多說明,很easy對吧,不明白的可以看下下邊的圖。
尋找單鏈表的中間節點
思路 1 首先求解單鏈表的長度length,然後遍歷 length 2 的距離即可查到單鏈表的中間節點,但一般此種方法需要遍歷兩次鍊錶,第一次遍歷求解單鏈表的長度,第二次遍歷根據索引獲取中間節點。2 如果是雙向鍊錶,可以首尾並行,利用兩個指標乙個從頭到尾,乙個從尾到頭,當兩個指標相遇的時候,就找到中...
求單鏈表的中間元素
示例1 輸入 1 2 3 輸出 2 示例2 輸入 1 2 3 4 輸出 2思路 如果是陣列,我們可以怎麼求中間元素 arr arr.length 1 2 相模擬,如果是鍊錶 a.求鍊錶的長度 b.從頭開始遍歷鍊錶,並計數 public class middleelement 計算中間元素的索引 in...
如何找到單鏈表的中間節點
力扣p148 思路 借用兩個快慢不同的指標,開始的時候讓兩個指標都指向鍊錶第乙個結點的位置,然後,讓快指標一次走兩步,讓慢指標一次走一步。鍊錶結點個數為奇數個時 當快指標走到null前面乙個結點的時候,慢指標此時剛好指向鍊錶中間結點。鍊錶結點個數為偶數個時 當快指標走到null的時候,慢指標此時剛好...