首页 > 代码库 > Dummy Head在链表中的应用
Dummy Head在链表中的应用
Leetcode 203. Remove Linked List Elements
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
public ListNode removeElements(ListNode head,int val){
ListNode dummyHead=new ListNode(-1);
dummyHead.next=head;
ListNode curr=head,prev=dummyHead;
while(curr!=null){
if(curr.val=val) prev.next=curr.next;
else prev=prev.next;
curr=curr.next;
}
return dummyHead.next;
}
Dummy Head是一种非常有用的技巧,容易写出bug free的code。本题中如果不用dummy head而直接返回head的话,就会存在要考虑head是否为空的问题,在while循环中会出现问题。有了dummyhead, 所有的节点都拥有了前置节点,也就不用再考虑头结点为空的情况了,这一点在删除节点是非常有用。返回时返回dummyhead.next,所以也不用存储头结点
Dummy Head在链表中的应用