19 刪除鍊錶的第n個節點 c

2021-09-24 10:17:03 字數 664 閱讀 2504

給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

首先先講乙個兩遍遍歷的方法:

很簡單,就是首先遍歷一遍鍊錶,記錄鍊錶長度為l,則我們要刪除的為第l-n+1個節點。再次遍歷一遍鍊錶即可。emmmmm,此方法較簡單就不做論述。

一遍遍歷的方法:

雙指標,一指標p比另一指標q提前移動n個結點,當指標p的next為空時,那麼指標q的next就為要刪除的節點。(p和q相距n個結點,當p移動到最後乙個時,q的next就指的刪除結點的前乙個)

邊界問題:

eg:[1,2]

2應輸出2,如果第一次移動p直接等於空的話,說明要刪除第乙個結點,那麼我們直接返回head

->next

**如下:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

while

(p->next)

} p = q->next;

q->next = p ->next;

return head;}}

;

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

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?說實話,就我的水平而言感覺這道題坑點還真不少,先來我的乙個粗糙版...

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

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?class solution def removenthfrom...

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

給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.給定的n保證是有效的。首先遍歷得出鍊錶的長度l,然後刪除第l n個節點 definition for singly linked list....