/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct
ListNode* deleteDuplicates(
struct
ListNode* head){
struct
ListNode* pre = (
struct
ListNode*)malloc(
sizeof
(
struct
ListNode));
pre->next = head;
struct
ListNode* curr = pre;
for
(
struct
ListNode* tmp = head;tmp!=NULL && tmp->next!=NULL;tmp=tmp->next){
if
(tmp->val == tmp->next->val){
while
(tmp!=NULL && tmp->next!=NULL && tmp->val == tmp->next->val){
struct
ListNode* delNode = tmp;
tmp = tmp->next;
free(delNode);
}
curr->next = tmp->next;
}
else
{
curr->next = tmp;
curr = curr->next;
}
}
return
pre->next;
}