如何刪除單鏈表中的倒數第n個節點?
先遍歷一遍單鏈表,計算出單鏈表的長度,然後,從單鏈表頭部刪除指定的節點。
/***
* description: 刪除單鏈表倒數第n個節點,常規解法.
* * @param head
* @param n
* @return listnode
*/public static listnode removenthfromend(listnode head, int n)
//if remove first node
int fromstart = len - n + 1;
if (fromstart == 1)
return head. next ;
//remove non-first node
p = head;
int i = 0;
while (p != null )
p = p. next ;
}return head;
}使用快慢指標。快指標比慢指標提前n個單元。當快指標到達單鏈表尾部時,慢指標指向待刪除節點的前節點。
/***
* description: 刪除單鏈表倒數第n個節點,快慢指標法.
* * @param head
* @param n
* @return listnode
*/public static listnode removenthfromend(listnode head, int n)
//if remove the first node
if (fast == null )
while (fast. next != null )
slow. next = slow. next . next ;
return head;
}
刪除單鏈表的倒數第n個節點
題目描述 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和n 2.當刪除了倒數第二個節點後,鍊錶變為1 2 3 5.說明 給定的 n 保證是有效的。解題思路 本人使用雙指標法 首先建立乙個虛擬頭節點 dummyhead 作為給定頭節點的上乙...
刪除單鏈表中倒數第n個節點(JAVA)
參考單鏈表反轉中的主類 鍊錶中有字段size是節點總個數 倒數第lastnum個節點就是正數第size lastnum 1個節點,index size lastnum 刪除操作需要拿到倒數第lastnum 1個節點來完成,即正數第size lastnum個節點,index size lastnum ...
刪除單鏈表倒數第K個節點
有p1,p2兩個指標,p1從頭開始跑,先跑k個節點,然後p2開始跑,當p1跑到頭時,p2指向的就是倒數第k個節點了。這道題的思路比較簡單,要想做得更好,可以加入一些魯棒性的考慮,比如說空鍊錶情況,鍊錶長度小於k等。下面是 include struct node class solution if k...