题目:
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
分析:先处理头指针,再处理重复问题。
代码如下:
ListNode *deleteDuplicates(ListNode *head) {
while(head!=NULL)
{
int i=0;
while(head->next!=NULL&&head->val==head->next->val)
{
head=head->next;
i++;
}
if(i>0)
{
head=head->next;
}
else
{
break;
}
}
if(head==NULL)return head;
if(head->next==NULL)return head;
ListNode *head1=head;
while(head1->next!=NULL)
{
ListNode *head2=head1->next;
int i=0;
while(head2->next!=NULL&&head2->next->val==head2->val)
{
head2=head2->next;
i++;
}
if(i>0)
{
head1->next=head2->next;
}
else
{
head1=head1->next;
}
}
return head;
}