/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
struct ListNode* deleteDuplicates(struct ListNode* head ) {
    // write code here
    if(head == NULL) return head;
    struct ListNode *dummy = malloc(sizeof(struct ListNode));
    dummy->next = head;
    struct ListNode *c = dummy;
    while(c->next != NULL) {
        if(c->next != NULL && c->next->next != NULL && c->next->val == c->next->next->val) {
            int temp = c->next->val;
            while(c->next != NULL && c->next->val == temp) {
                c->next = c->next->next;
            }
        } else {
            c = c->next;
        }
        
    }
    return dummy->next;
}