單鏈表刪節點

2021-08-03 19:40:31 字數 637 閱讀 9540

題目:

只給定鍊錶中的節點node,不給頭結點,如何在鍊錶中刪除node?實現這個函式,要求時間複雜度o(1)

思路:

該題當然是說單鏈表,如果雙鏈表就很容易了。比如單鏈表 1->2->3->4->5...,現在只知道節點node=3,如何將其刪除。

把節點4的值拷貝到節點3,然後刪除節點4(即node.next拷貝到node,然後刪除node.next所對應的節點)

該方法存在的弊端:

(1)沒辦法刪除最後乙個節點,如...->2->3->null,只知道節點3,它是最後乙個節點,沒辦法拷貝刪除後面。

如果直接將3賦值null也是不行的,因為正常刪除後2.next=null。null在系統中是特定的乙個區域,如果想讓2.next=null,必須找到節點2.現在找不到2.所以無法刪除。

(2)該方式並不是真正的刪除節點,而是進行值拷貝。在實際工程中,可能拷貝操作很複雜,或者節點4是很多節點的外部依賴,這樣刪除方式可能會破壞這種依賴關係。

給出單鏈表頭結點和待刪除節點值

public class remove 

pre=cur;

cur=cur.next;

}return head;

}}

鍊錶問題之無頭單鏈表刪節點 Java實現》

從無頭單鏈表中刪除乙個既不是頭結點,也不是尾節點節點 author sking package 鍊錶問題 public class 無頭單鏈表刪節點 從無頭單鏈表中刪除節點問題 假設有乙個沒有頭指標的單鏈表,乙個指標指向此單鏈表的中間一 個節點 不是第乙個也不是最後乙個 將此節點從此鍊錶中刪除。假設...

單鏈表刪除節點

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。思路 刪除某個結點需要找到該結點的前乙個結點,由於單向鍊錶沒有指向前乙個結點的指標,所以不得不從頭指標開始遍歷鍊錶。顯然時間複雜度為o n 1 待刪除的節點不是尾節點的情況 首先把待刪除的節點的前乙個節點的...

單鏈表 無頭節點

就這書上 敲了一邊,加深印象,沒有頭結點的時候插入第乙個就有所不同了,而刪除時要找到前乙個,注意current link null 就這樣。include include include using namespace std struct linknode class list bool list...