刪除單鏈表的倒數第K個節點

2021-08-09 22:20:28 字數 727 閱讀 4893

/**

* created by lxw, [email protected] on 2017/10/27.

* 刪除單鏈表中倒數第k個結點

*/public class thelastkthnode

}public node removelastkthnode(node head, int lastkth)

if(lastkth ==0)

if(lastkth < 0)

cur.next = cur.next.next;

}return head;

}}

ps: 假設n=9, k=6,目的是刪除倒數第6 個元素,也就是正數第4個元素,需要找到目標元素的前乙個元素。讓鍊錶從頭開始走,每移動一步,k減1,如第三行所示,最後乙個元素為-3(k-n),然後進行第二次遍歷,k的值依次加1,當為0時停止遍歷,此時所對應的結點即為要刪除元素的前乙個結點正數1

2345

6789

倒數987

6543

2154

3210

-1-2

-3-2-10

1234567

8998

7654

321

另外一種方法是使用雙指標,front, back,front先走k個結點, 然後back與之同步走, 當front.next == null時, back所對應的結點就是要刪除結點的前乙個結點

刪除單鏈表倒數第K個節點

有p1,p2兩個指標,p1從頭開始跑,先跑k個節點,然後p2開始跑,當p1跑到頭時,p2指向的就是倒數第k個節點了。這道題的思路比較簡單,要想做得更好,可以加入一些魯棒性的考慮,比如說空鍊錶情況,鍊錶長度小於k等。下面是 include struct node class solution if k...

單鏈表的倒數第K個節點

思路 建立兩個迭代器,乙個迭代器quick,乙個迭代器slow,quick沿鍊錶,先行k步,然後和slow一起行進,直至quick到達鍊錶尾端,此時slow對應的資料,就是倒數第k個節點。include include includeusing namespace std listchange ve...

單鏈表查詢倒數第K個節點

分析 p q兩個指標指向表頭結點,p向前移動k個位置後q向前移動,當p結點移到尾結點時,q的next指標域所指結點即為所求結點 若不存在k個結點,則當p指向尾結點時,k不為0。include include typedef struct node node,linklist linklist cre...