给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例
给出 1->2->3->3->4->4->5->null,返回 1->2->5->null
给出 1->1->1->2->3->null,返回 2->3->null
class Solution{
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode * deleteDuplicates(ListNode *head) {
// write your code here
if(head==NULL||head->next==NULL) return head;
else
{
ListNode* newHead=new ListNode(-1);
newHead->next=head;
ListNode* pre=newHead;
ListNode* p=head;
ListNode* next=NULL;
while(p!=NULL && p->next!=NULL)
{
next=p->next;
if(p->val==next->val)
{
while(next!=NULL && next->val==p->val) next=next->next;
pre->next=next;
p=next;
}
else
{
pre=p;
p=p->next;
}
}
return newHead->next;
}
}
};