删除单链表中值为的给定值的元素
public ListNode removeElements(ListNode head, int val) {
if(head == null) return head;
ListNode dummy = new ListNode(0); //新建一个冗余节点,省去判断删除第一个节点的过程
dummy.next = head;
ListNode p1 = dummy;
ListNode p2 = head;
while(p2 != null){
if(p2.val == val){
p1.next = p2.next;
p2 = p1; //注意:删除节点后,p2指向的节点需往回挪一个,否则下一步p1会指向已经删除掉的元素,如果连着两个元素都需要删除,后一个元素会删除失败
}
p1 = p2;
p2 = p2.next;
}
return dummy.next;
}