import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param val int整型 
     * @return ListNode类
     */
    public ListNode removeElements (ListNode head, int val) {
        // write code here
        
			ListNode dummyListNode=new ListNode(0);
			dummyListNode.next=head;
			ListNode currentListNode=dummyListNode;
			while(currentListNode.next!=null) {
				if(currentListNode.next.val==val) {
					currentListNode.next=currentListNode.next.next;	
				}else {
					currentListNode=currentListNode.next;
				}
			}
			return dummyListNode.next;
    }
}
    
    



创建一个虚拟头结点,以此来规避head本身的值与val相等的情况,创建一个current指针,指向当前的结点,如果current.next的值与val相等,那么就让current.next=current.next.next;如果不相等,就正常移动指针,让current=current.next,最后返回dummy.next,表示新的头结点