删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode pre=new ListNode(0);
ListNode p=head;
pre.next=head;
ListNode cur=pre;
while(p!=null)
{
if(p.val==val)
{
p=p.next;
pre.next=p;
}
else
{
pre=p;
p=p.next;
}
}
return cur.next;
}
}
总结:1.这里return的不是head,因为head也可能被删除了。
2.也不能return pre.val, 因为pre在动。
3.使用一个cur来标记pre,返回cur.next