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

2021-09-05 08:56:34 字數 883 閱讀 8915

題目

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

思路

兩次遍歷鍊錶,第一遍每移動一步,就讓k值減1;第二遍從頭開始遍歷鍊錶,每移動一步k值加1,加到0就停止遍歷,此時移動到的節點就是要刪除節點的前乙個節點。

**實現

class

node

}class

doublenode

}public

class

removelastkthnode

node cur = head;

while

(cur != null)

if(lastkth ==0)

if(lastkth <0)

cur.next = cur.next.next;

}return head;

}/**

* 雙鏈表

** @param head

* @param lastkth

* @return

*/public doublenode removelastkthdoublenode

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

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

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

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

題目 分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。要求 如果鍊錶長度為n,時間複雜度達到o n 額外空間複雜度達到o 1 解答 單鏈表 public class node public node removelastkthnode node head,...