刪除鍊錶的倒數第N個節點 啞節點和雙指標

2021-10-04 07:17:29 字數 941 閱讀 5139

給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回鍊錶的頭結點。

給定的 n 保證是有效的。

c++結構體:

/** * definition for singly-linked list.

* struct listnode

* };

*/ c++函式形式: listnode*

removenthfromend

(listnode* head,

int n)

老樣子,單鏈表訪問逆序元素的問題,最好的辦法是使用雙指標。

在這裡乙個指標先走n步,然後兩個指標一起走,直到快指標走到鍊錶尾。

這裡要注意一些特殊情況:

這些特殊情況都要特殊處理。

但我們可以使用啞節點來優化一下,就可以省去這麼多沒必要的判斷。

啞節點其實就是在頭節點前面加上乙個節點,便於處理頭節點的一些特殊情況,省去不必要的**。返回的時候返回啞節點的下乙個節點,也就是頭節點,注意嗎,不能直接返回頭節點,直接返回頭節點就失去它存在的意義了,而且會出錯。

class

solution

p2->next=p2-

>next-

>next;

return head;}}

;

class

solution

p2->next=p2-

>next-

>next;

return dummy-

>next;}}

;

atfwus --writing by 2020–03–23

刪除鍊錶倒數第N個節點

1.問題 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.2.演算法 暴力破解法 先計算得出鍊錶的長度m,然後將鍊錶長度和所給倒數字置相減,即loc m n 1,得出刪除節點的前...

刪除鍊錶倒數第n個節點

leetcode 題目 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.note n 鍊錶長度時,刪除頭節點 n 0時,不做任何操作。當第乙個指標first 比第二個指標領先n步,然後...

刪除鍊錶的倒數第N個節點

與查詢鍊錶的倒數第n個節點對比只改動了一行 查到倒數第n個節點後,將該節點的後續指標p1.next p1.next.next 即可 package 鍊錶中 public class nthnodefromendoflist return m 刪除倒數第n個節點 param args public s...