给定一个排序链表,删除所有重复的元素,使得每一元素只出现一次。
输入: 1->1->2
输出: 1->2
输入: 1->1->2->3->3
输出: 1->2->3
struct ListNode* deleteDuplicates(struct ListNode* head){
if(head== NULL || head->next == NULL)return head;//考虑第一个为空节点或只有一个节点的情况
struct ListNode *p=head;
struct ListNode *q;
while(p->next)//只有当后面还有节点时才会比较
{
q=p->next;
if(p->val==q->val)
{
p->next=q->next;
free(q);//记得删除跳过的节点
}
else
p=p->next;
}
return head;
}