力扣
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1
输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7
输出:[]
提示:
列表中的节点数目在范围 [0, 104] 内
1 <= Node.val <= 50
0 <= val <= 50
public class RemoveLinkedListElements {
public static ListNode removeElements(ListNode head, int val) {
if(head == null){
return head;
}
ListNode vHead = new ListNode(-1, head); // 创建一个虚拟头节点,以至头结点删除操作与普通节点一致
ListNode pre = vHead; // 指向头结点
ListNode cur = head; // 指向下一节点
while(cur != null){
if(cur.val==val){
pre.next = cur.next;
}else {
pre = cur;
}
cur = cur.next;
}
return vHead.next;
}
public static void main(String[] args) {
ListNode head7 = new ListNode(6);
ListNode head6 = new ListNode(5, head7);
ListNode head5 = new ListNode(4, head6);
ListNode head4 = new ListNode(3, head5);
ListNode head3 = new ListNode(6, head4);
ListNode head2 = new ListNode(2, head3);
ListNode head = new ListNode(1, head2);
removeElements(head, 6);
}
}