题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
ListNode* deleteDuplication(ListNode* pHead)
{
//这里的重复节点与例题中类似,连续出现
//if(pHead==NULL) return pHead;
//考虑全链表重复情况
ListNode*head=new ListNode(0);
head->next=pHead;
ListNode*p=head,*pre=head;
while(p&&p->next)
{
if(p->val==p->next->val)
{
while(p&&p->next&&p->val==p->next->val)
p=p->next;
pre->next=p->next;
//非删除情况
}else
{
pre=p;
}
p=p->next;
}
return head->next;
}
{
//这里的重复节点与例题中类似,连续出现
//if(pHead==NULL) return pHead;
//考虑全链表重复情况
ListNode*head=new ListNode(0);
head->next=pHead;
ListNode*p=head,*pre=head;
while(p&&p->next)
{
if(p->val==p->next->val)
{
while(p&&p->next&&p->val==p->next->val)
p=p->next;
pre->next=p->next;
//非删除情况
}else
{
pre=p;
}
p=p->next;
}
return head->next;
}