题目
算法思想 :因为链表是有序的,所以我们定义两个指针p,q来处理,p指针指向起始元素,q指针指向p的下一个元素,如果相等则p继续指向下一个元素直至出现不同元素或者到链表尾部,然后p指向q。注意我们需要释放掉中间不用的节点,养成良好习惯。
ListNode* deleteDuplicates(ListNode* head) {
if(head == NULL)
return head;
ListNode *p,*q,*tmp;
p = head;
q = head->next;
while(q != NULL)
{
if(p->val == q->val)
{
tmp = q;
q = q->next;
free(tmp);
}
else
{
p->next = q;
p = p->next;
q = p->next;
}
}
p->next = q;
return head;
}