题目
思路:引入一个虚拟结点,这是一个非常重要的思想。通过这个虚拟节点可以返回整个链表。
如果要删除这个元素就要让pre指向的是head.next。 head到head.next,这样去遍历。如果不是要删除的元素,那么就先让让pre到head的地方,head再去指向下一个head.next。最后遍历完成返回dummy即可
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
while(head!=null){
if(head.val==val){
pre.next=head.next;
}
else{
pre = head;
}
head=head.next;
}
return dummy.next;
}
}