/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        if(head==nullptr)
        {
            return nullptr;
        }
        else
        {
            ListNode* p=head;//注意牛客题目头结点有值
            ListNode* p_=p->next;
            while(p!=nullptr)
            {
                while(p_!=nullptr&&p->val==p_->val)
                {
                    p->next=p_->next;
                    delete p_;
                    p_=p->next;
                }
                p=p_;
                if(p_!=nullptr)
                    p_=p->next;

            }
            return head;
        }
    }
};