class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
if(pHead == NULL||pHead->next==NULL){
return pHead;
}
ListNode * head = new ListNode(-1);
ListNode * index= deletel(pHead);
head->next = index;
while(index != NULL && index->next!= NULL){
ListNode *newNode = deletel(index->next);
index->next = newNode;
index = index->next;
}
return head->next;
}
ListNode* deletel(ListNode *node){
if(node == NULL ||node->next == NULL|| node->val != node->next->val){
return node;
}
while(node != NULL && node->next != NULL && node->val == node->next->val){
node = node->next;
}
node = node->next;
if(node != NULL && node->next != NULL && node->val == node->next->val){
return deletel(node);
}
return node;
}
};