思路:1.先判断链表是否为空,定义类似c语言的指针,要保持头指针不动,因为动的话会导致失去整个链表,所以定义两个虚拟指针,一个指向第一个结点,另一个指向第一个结点的下一个结点,2.如果第二个结点的值就是要删除的值,故让第一个结点的虚拟指针指向第二个结点的下一个结点,然后让指向第二个结点的虚拟指针指向第三个结点。3.如果第二节点不是要删除的结点,就让头节点的虚拟指针指向第二个结点,让第二个结点的虚拟指针指向第三个结点以此类推,以上2,3两步可以写成if条件语句。4.最后再判断头节点的值是否是要删除的值,也可用if条件语句进行判断
class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head==null){
return null;
}
ListNode cur=head.next;
ListNode prev=head;
while(cur!=null){
if(cur.val==val){
prev.next=cur.next;
cur=cur.next;
}else{
prev=cur;
cur=cur.next;
}
}
if(head.val==val){
head=head.next;
}
return head;
}
}