题目

算法思想 :因为链表是有序的,所以我们定义两个指针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;
}
博客介绍了有序链表去重的算法思想,通过定义两个指针p和q处理,若元素相等,p继续后移直至不同或到尾部,再指向q,同时释放中间不用节点。还给出了具体的代码实现。
254

被折叠的 条评论
为什么被折叠?



