刪除單鏈表和雙向鍊錶倒數第k個節點

2021-07-28 00:24:22 字數 845 閱讀 8247

注釋:當從鍊錶第乙個開始讀,直到讀到最後乙個,讓k不斷地減一。k>0說明沒什麼可以刪的,返回head即可,k=0,說明刪頭節點,k>0時,再從頭開始讀,k逐漸+1,直到k=0,那個便是要刪除的前乙個節點

public class node 

}

public static node removelastkthnode(node head,int lastkth)

node cur=head;

while (cur!=null)

if(lastkth==0)

if(lastkth<0)

cur.next=cur.next.next;

}return head;

}

雙向鍊錶:

public class doublenode 

}

public static doublenode removelastkthnode(doublenode head,int lastkth)

doublenode cur=head;

while (cur!=null)

if(lastkth==0)

if(lastkth<0)

doublenode newnext=cur.next.next;

cur.next=newnext;

if(newnext!=null)

}return head;

}

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

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

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

在資料結構這一方面,鍊錶這塊容易搞混的是它的指標。下面的演算法為刪除單鏈表倒數第k個結點,所有的步驟解析都在 裡說明了。刪除單鏈表的倒數第 k個結點.結點定義 classnode public classremotelastedkthnode node node head 遍歷一遍鍊錶,得到 k 最...

鍊錶問題 在單鏈表和雙鏈表中刪除倒數第K個節點

題目 在單鏈表和雙鏈表中刪除倒數第k個節點。要求時間複雜度o n 空間複雜度o 1 基本思路 方法一。從煉表頭開始走到尾,每移動一步,k減1。移動完之後,如果k 0,說明鍊錶長度不夠k,根本就沒有倒數第k個值,返回頭節點 head 如果k 0,說明鍊錶的長度等於k,頭節點就是倒數第k個節點,返回 h...