方法:第一种情况,要删除的节点不是头结点。找到要删除节点的前一个节点直接pre.next=pre.next.next
第二种情况,要删除的节点是头结点。head=head.next。如果删除后值还是等于要删除节点的值直接循环。
class Solution {
public ListNode removeElements(ListNode head, int val) {
//删除值相同的头结点后,可能新的头结点也值相等,用循环解决
while(head!=null&&head.val==val){
head=head.next;
}
if(head==null)
return head;
ListNode prev=head;
while(prev.next!=null){
if(prev.next.val==val){
prev.next=prev.next.next;
}else{
prev=prev.next;
}
}
return head;
}
}