刪除鍊錶中等於給定值 val 的所有節點

2021-09-22 22:45:59 字數 824 閱讀 3851

刪除鍊錶中等於給定值val的所有節點

示例:

輸入: 1->2->6->3->4->5->6, val = 6

輸出: 1->2->3->4->5

分析過程:

1)要想刪除所有給定值為val的節點,必須要遍歷一次鍊錶

2)從第二個節點開始遍歷(如果從第乙個節點開始遍歷,第乙個節點的prev會出現空指標異常)

3.1)如果cur節點的值等於val, 利用prev節點刪除cur節點(此處引入prev節點就是為了刪除cur節點)

3.2)如果cur節點的值不等於val,繼續向後遍歷,即cur、prev都向後走一步

4)因為是從第二個節點開始遍歷,最後還需判斷第乙個節點的值是否為val

//刪除鍊錶中給定值為val的節點

public listnode removeelements(listnode head, int val)

listnode prev=head;

listnode cur=head.next;

while(cur!=null)else

}if (head.val == val)

return head;//此處不能返回cur

刪除鍊錶中等於給定值val的所有節點

刪除鍊錶中等於給定值val的所有節點 例如 給出鍊錶1 2 3 3 4 5 3,和 val 3,你需要返回刪除3之後的鍊錶 1 2 4 5 way1 迭代 追加人為表頭 陷入沒有表頭的陷阱,總是想記下刪除節點的先驅,導致折騰了很久,其實只要人為加乙個表頭就簡單很多了!definition for s...

刪除鍊錶中等於給定值 val 的所有節點。

採用快慢針的方法,listnode p指向鍊錶頭部,listnode q p.next。再定義乙個listnode start表示刪除指定val值後的頭結點,先賦值為p。結點的遍歷從q結點開始,當q.val不等於val時,p的下乙個結點指向q,並且p q同時向後移動,直至q null,表示遍歷鍊錶結...

刪除鍊錶中等於給定值 val 的所有節點。

這道題的做法是遍歷列表,定義乙個當前結點的前驅,當前結點,當碰到和該資料相同的數,就讓改資料所在結點的前驅指向當前結點的下乙個結點,如果不相同,前驅和當前結點繼續遍歷,重複此操作,還有一種特殊情況就是當要刪除的結點的資料和頭結點相同時要分開處理。有三種解決辦法,第一種是直接把頭結點移至下乙個結點,如...