劍指 Offer 18 刪除鍊錶的節點

2021-10-13 03:12:35 字數 1024 閱讀 2274

劍指 offer 18. 刪除鍊錶的節點

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。

返回刪除後的鍊錶的頭節點。

注意:此題對比原題有改動

示例 1:

輸入: head = [4,5,1,9], val = 5

輸出: [4,1,9]

解釋: 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9.

示例 2:

輸入: head = [4,5,1,9], val = 1

輸出: [4,5,9]

解釋: 給定你鍊錶中值為 1 的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9.

說明:

題目保證鍊錶中節點的值互不相同

若使用 c 或 c++ 語言,你不需要 free 或 delete 被刪除的節點

刪除鍊錶結點這種題目,翻了翻,之前寫過三篇文章:

資料結構與演算法—線性表—刪除鍊錶中的節點、移除鍊錶元素

資料結構與演算法—線性表—刪除排序鍊錶中的重複元素

資料結構與演算法—鍊錶—移除鍊錶元素、兩數相加

第二道題是刪除鍊錶中的所有與某乙個val相等的節點,也就是給定的鍊錶有可能會有多個值

解決辦法有:

解決方法有:

以下,分別嘗試使用三種方法來解決該題:

class

solution

else

}return head;

}}

class

solution

else

}//返回虛擬頭結點的下乙個元素

return dummyhead.next;

}}

class

solution

else

}}

劍指offer18 刪除鍊錶節點

1.考慮輸入空鍊錶和乙個節點鍊錶 2.如果頭節點不重複,直接遞迴查詢重複 3.雙指標,進行判斷兩個節點是不是相等 coding utf 8 class listnode def init self,x self.val x self.next none class solution def dele...

劍指offer 18 刪除鍊錶的結點

typedef int datatype typedef struct listnode listnode 建立結點 static listnode createnode datatype data 鍊錶初始化 void listinit listnode ppfirst 鍊錶銷毀 void lis...

劍指offer 18 刪除鍊錶的節點

描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。示例 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.常規思路 定義乙個暫時變數用來刪除節點...