**
今天写力扣203题时候
**
出现单链为【1,2,3,7】删除7时,
return head 时答案正确
但面对【7,7,7,7】删除7时,报错的情况
一直没搞清楚,现在明白了
ListNode dummyHead = new ListNode(-1);
dummyHead.next= head ;
ListNode perv = dummyHead;
while(perv.next!=null){
//此时就是待删除的前驱节点
if (perv.next.val == val) {
ListNode node = perv.next;
perv.next = node.next;
node.next =null;
}else{
perv = perv.next;
}
}
return dummyHead.next;
此处必须返回dummyHead.next,
是因为面对【7,7,7,7】这类连续删除头节点
直到头节点为null时
头节点(dummyhead.next)一直在变
而作为参数传入的head节点已经被制空。
如果删除时头节点不改变,则返回值为head或dummyHead.next无所谓
我们考虑全面后,将返回值写为dummyHead.next