02链表:203、移除链表元素

203. 移除链表元素

文章目录

    • 203. 移除链表元素
      • 方法一:原链表处理,头结点特殊处理
      • 方法二:添加虚拟节点

重点:

  • 单向链表,需要存储前一个元素,进行拼接;
  • while循环只能判断当前节点是否为空;
  • 指针移动在while循环中控制

方法一:原链表处理,头结点特殊处理

方法二:添加虚拟节点

        public ListNode removeElements(ListNode head, int val) {

            //设置虚拟节点
            ListNode firstNode = new ListNode();
            //虚拟节点指向head
            firstNode.next = head;

            //当前节点
            ListNode cur = head;
            //存储前一个节点,找到元素后进行连接
            ListNode pre = firstNode;
            while (cur != null) {
                if (cur.val == val) {
                    //找到之后,前一个还是原来的(因为删除了当前节点)
                    pre.next = cur.next;
                } else {
                    //未找到,前一个节点进一步
                    pre = cur;
                }
                //当前节点,移到下一个
                cur = cur.next;
            }
            // 不返回虚拟节点
            return firstNode.next;


        }

你可能感兴趣的:(算法,链表,数据结构,java)