鍊錶14 刪除鍊錶中所有指定值結點問題

2021-10-23 17:57:04 字數 739 閱讀 4617

問題:現在有乙個單鏈表。鍊錶中每個節點儲存乙個整數,再給定乙個值val,把所有等於val的節點刪掉。給定乙個單鏈表的頭結點head,同時給定乙個值val,請返回清除後的鍊錶的頭結點,保證鍊錶中有不等於該值的其它值。請保證其他元素的相對順序。

測試樣例:

,2思路:題目中已經保證了鍊錶中一定有不等於val的其他值,因此刪除後的鍊錶不為null。

所謂刪除結點pcur,需要儲存pcur和前面的結點ppre,為了清楚還保留乙個pnext(其實就是pcur.next),只要設定為ppre.next=pnext即刻。

本題中,遍歷鍊錶,時刻保持ppre,pcur,pnext如果某個結點需要刪除就將ppre.next設定為pnext,然後ppre,pcur,ppnext均向下移動乙個結點即可。特殊的:如果要刪除的是頭結點,那麼可以採用在頭結點之前加上乙個dummy結點,dummy結點始終不會被刪除,可以作為頭結點,之後的結點刪除與中間結點刪除一樣;對於尾結點的刪除,此時pnext==null,直接將ppre.next設定為pnext(null)即可。因此除了使用乙個dummy,其他沒有什麼特殊的。

技巧:這裡通過在最前面加乙個dummy作為頭結點,使得原來的頭結點head也向普通的結點一樣可以用一樣的邏輯進行刪除。

publicclass clearvalue else

pcur=pnext;

if(pcur!=null)

}return dummy.next;

}}

刪除鍊錶中所有值為k的節點

給定乙個單鏈表,刪除其中值為 的所有節點。例如 1 2 6 3 4 5 6 刪除其中值為6的節點,返回 1 2 3 4 5 這是乙個簡單的鍊錶操作題。刪除是要考慮的節點所在的位置 頭部,中間和尾部 分開處理一下好了。主要過程如下描述 i.wh ileh ead va l ta rget head h...

刪除鍊錶中所有值為val的節點

題目描述 問題 1 2 3 4 val 2 要求輸出為 1 3 4 解題思路 1 遍歷一遍鍊錶,對比每個節點,刪除值為val的節點 2 需要注意的點 一般來說遍歷都是從頭開始,但是在這種沒有頭節點的鍊錶中勢必要考慮若第乙個節點就為所要刪除的節點時該如何解決 if head return head w...

刪除鍊錶指定val值的所有元素

刪除鍊錶中等於給定值 val 的所有節點。題目源於領扣 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 分析 刪除元素過程 以c 為例 如圖 注意 當刪除的節點就是頭結點時,新的頭結點 即cur next 就是null,滿足刪除指定val的所有元素的條件。當判斷完結點是否為頭...