一、问题描述
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
二、问题分析
因为可能会删除head节点,所以可以额外增加一个头结点,便于控制。剩下的就是遍历链表,因为删除某个节点的时候需要把之前的节点链到被删的后面,因此需要两个指针来处理。
三、Java AC代码
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = dummy;
ListNode q = head;
while(q!=null){
if (q.val == val) {
p.next = q.next;
}else {
p = p.next;
}
q = q.next;
}
return dummy.next;
}