刪除單鏈表中的元素

原題

  Remove all elements from a linked list of integers that have value val.
  Example
  Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
  Return: 1 --> 2 --> 3 --> 4 --> 5算法

題目大意

  給定一值val,在單鏈表中刪除值爲val的結點。spa

解題思路

  在鏈表頭添加一個結點,對鏈表進遍歷和刪除操做。.net

代碼實現

鏈表結點類code

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

算法實現類element

public class Solution {

    public ListNode removeElements(ListNode head, int val) {
        ListNode root = new ListNode(1);
        root.next = head;
        // 調於記錄要處理的元素的前驅結點
        ListNode prev = root;

        // prev.next表示要處理的結點
        while (prev.next != null) {
            // 要處理的結點是要刪除的結點
            if (prev.next.val == val) {
                // 對結點進行刪除操做
                prev.next = prev.next.next;
            }
            // 當前處理的節點不須要刪除,prev移動到下一個結點
            else {
                prev = prev.next;
            }
        }

        // 返回新的根結點
        return root.next;
    }
}
相關文章
相關標籤/搜索