題目描述:
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:
給定乙個鍊錶:1->2->3->4->5, 和n = 2.說明:當刪除了倒數第二個節點後,鍊錶變為1->2->3->5.
給定的 n 保證是有效的。
解題思路:本人使用雙指標法
首先建立乙個虛擬頭節點(dummyhead),作為給定頭節點的上乙個節點。
建立慢指標,初始值指向虛擬頭節點。然後找到快指標,為慢指標後面第n個節點。
刪除慢指標的下乙個節點,並返回虛擬頭節點的下乙個節點(給定煉表頭節點)。
**實現:
class solution
listnode dummyhead = new listnode(-1);
dummyhead.next = head;
//慢指標,初始值為虛擬頭節點
listnode s = dummyhead;
//找到快指標的位置(慢指標後面第n個)
int i = 1;
while (i < n)
i++;
}//找到倒數第n個節點的上乙個節點
listnode f = head;
while (f != null && f.next != null)
//刪除倒數第n個節點
s.next = s.next.next;
return dummyhead.next;
}}
刪除單鏈表倒數第n個節點
如何刪除單鏈表中的倒數第n個節點?先遍歷一遍單鏈表,計算出單鏈表的長度,然後,從單鏈表頭部刪除指定的節點。description 刪除單鏈表倒數第n個節點,常規解法.param head param n return listnode public static listnode removenth...
刪除單鏈表中倒數第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...