Description:
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
给出一个已排序的链表,删除所有副本,使得所有元素只出现一次
算法思路:
既然给定的是已排序的链表,那么相同的元素就是在相邻的位置,这样就可以确定删除的结点了
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode *p=head,*t=NULL;
if(head==NULL)
return NULL;
while(p->next!=NULL)
{
t=p->next;
if(p->val==t->val)
{
p->next=t->next;
free(t);
}
else //不相等就后移一位
p=t;
}
return head;
}