思路:思路很简单。pre指向前一个节点,cur指向当前节点,利用pre删除当前与val相同值的节点。
代码:
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummyNode = new ListNode(0, head);
ListNode pre = dummyNode, cur = pre.next;
while (cur != null){
if(cur.val == val){
//用pre删除cur节点,删除之后让cur指向pre之后一个节点。
//开始一直报空指针错误原因就在于删除cur之后,cur忘记移动了
pre.next = pre.next.next;
cur = pre.next;
}else {
pre = pre.next;
cur = cur.next;
}
}
return dummyNode.next;
}
}