Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
C++
ListNode* deleteDuplicates(ListNode* head) {
ListNode* pre = new ListNode(-1);
ListNode* preHead = pre;
ListNode* pcur = head;
pre->next = head;
while(pcur&&pcur->next)
{
if(pcur->val == pcur->next->val)
{
while(pcur&&pcur->next&&pcur->val == pcur->next->val)
{
pcur = pcur->next;
delete pre->next;
pre->next = pcur;
}
}
else
{
pre->next = pcur;
pre = pre->next;
pcur = pcur->next;
}
}
return preHead->next;
}