鍊錶中間節點

2022-08-15 18:57:15 字數 752 閱讀 4109

. 題目

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。

如果有兩個中間結點,則返回第二個中間結點。

示例 1:

輸入:[1,2,3,4,5]

輸出:此列表中的結點 3 (序列化形式:[3,4,5])

返回的結點值為 3 。 (測評系統對該結點序列化表述是 [3,4,5])。

注意,我們返回了乙個 listnode 型別的物件 ans,這樣:

ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = null.

示例 2:

輸入:[1,2,3,4,5,6]

輸出:此列表中的結點 4 (序列化形式:[4,5,6])

由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。

2. 思路

定義快慢兩個指標,從頭結點開始,慢指標每次向後移動乙個結點,快指標每次向後移動兩個結點。

查詢鍊錶中間節點

問題 鍊錶長度未知,如何查詢中間節點 分析 鍊錶中間節點受鍊錶長度影響,奇數長度如abc則中間節點為b,偶數長度如abcd則中間節點為bc。解決方法 使用兩個指標ptr1 ptr2 head,同時遍歷鍊錶,ptr1步長為1,ptr2步長為2.當ptr2到達鍊錶尾時,ptr1即為中間節點 如果鍊錶長為...

尋找鍊錶中間節點

cpp view plain copy include include include include typedef intdatatype typedef struct linknode linknode,plinknode 結點結構體 typedef struct linklist linkl...

尋找鍊錶中間節點

include include include include typedef intdatatype typedef struct linknode linknode,plinknode 結點結構體 typedef struct linklist linklist plinklist 鍊錶 函式原...