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

2021-08-11 19:32:19 字數 810 閱讀 6423

【題目】

分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。

【要求】

如果鍊錶長度為n,時間複雜度達到o(n),額外空間複雜度達到o(1)。

【解答】

單鏈表:

public class node

}public 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;

}

對於雙鏈表的調整,幾乎與單鏈表的處理方式一樣,注意last指標的重連即可。

public class doublenode

}public 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個節點

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

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

分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。如果鍊錶長度為n,則要時間複雜度達到o n 額外空間複雜度達到o 1 一種方法是設定快慢指標,快指標先走k步,此時慢指標從頭開始走,兩者同時開始走,當快指標走到尾時,慢指標走到倒數第k個節點,刪除當前慢指標的...

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

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 在單鏈表和雙鏈表中刪除倒數第k個節點 這一題目的c 復現。感謝左程雲老師的支援。題目 分別實現兩個函式,乙個可以刪除單鏈表中倒數第 k 個節點,另乙個可以刪除雙鏈表中倒數第 k 個節點。要求 如果鍊錶長度為 n,時間複雜度達到 o n 額...