public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead == null || pHead.next == null)
            return pHead;
        ListNode newNode = new ListNode(0);  //新建结点,防止头节点被删除
        newNode.next = pHead;
        ListNode tmp = pHead;
        ListNode pre = newNode;  //保存前一个结点
        while(tmp != null && tmp.next != null){
            if(tmp.val == tmp.next.val){
                int val = tmp.val;
                //将跟tmp结点值相等的结点过滤掉
                while(tmp != null && tmp.val == val){
                    tmp = tmp.next;
                }
                //上一个非重复的结点指向下一个非重复的结点
                pre.next = tmp;
            }else{
                pre = tmp;
                tmp = tmp.next;
            }
        }
        return newNode.next;
    }