Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
这是道easy的题目,不过容易出bug。
首先最后的head不确定,所以这时要用dummyHead来帮助处理。
我每次战在当前节点看下一个节点是不是target val
如果不是,则把当前节点移到下一个节点。
如果是,则把下下个点点接到当前结点的next(当前节点的下一个被删掉了, 这时容易出bug,我把指针又往下移了一位就错了)。
然后如果当当前节点的next为null的时候就不继续了。
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode node = dummy;
while (node.next != null) {
if (node.next.val == val) {
node.next = node.next.next; // 这时就不要往下挪了!!
} else node = node.next;
}
return dummy.next;
}