單鏈表求中間節點

2021-09-26 05:59:45 字數 947 閱讀 6032

難度:兩星

單鏈表求中間節點分為兩種情況:

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的時候,慢指標此時剛好...