/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode pre;//定义指向前一位的指针
ListNode cur;//定义一个指向pre下一位的指针
//确定head起始的位置
while(head != null && head.val ==val){
head=head.next;
}
//判 head空 需要在上面的while循环下 否则当链表中存的值全部都是val 只会输出一个head
if(head == null){
return head;
}
//用pre指向head的位置
pre=head;
//cur指向pre下一位
cur=pre.next;
while(cur!=null){//开始判断
if(cur.val== val){//如果cur的val与val相等
pre.next=cur.next;//跳过当前cur的位置, 在if之外让cur=cur.next;也就是cur后移
}
else{//不相等则pre cur 都往下一位移动;
pre=cur;
}
cur=cur.next;
}
return head;
}
}