解题思路:
方法一:头节点和非头节点分开处理
方法二:定义一个dummy虚拟节点,后面的节点就可以采用相同的处理方式
注意:
cur需要指向要删除的节点的上一个节点,因为要越过这一个被删除的节点
class Solution {public ListNode removeElements(ListNode head, int val) {ListNode dummy = new ListNode();dummy.next = head;ListNode cur = dummy;while (cur.next != null) {if (cur.next.val == val) cur.next = cur.next.next;else cur = cur.next;}return dummy.next;}
}