首页 > 代码库 > 剑指offer57 删除链表中重复的结点

剑指offer57 删除链表中重复的结点

class Solution {public:    ListNode* deleteDuplication(ListNode* pHead)    {        if(!pHead)            return pHead;        struct ListNode *pre=(struct ListNode *)malloc(sizeof(struct ListNode));        pre->next=pHead;        ListNode *p1=pre;        ListNode *p2=pre->next;        while(p2&&p2->next)        {            if(p2->val==p2->next->val)            {                p2=p2->next;                while(p2->next&&p2->val==p2->next->val)                {                    p2=p2->next;                }                p1->next=p2->next;                p2=p2->next;            }            else            {                p1=p1->next;                p2=p2->next;            }        }        return pre->next;    }};

要注意判断指针是否存在,以及大于2个以上的连续结点重复的情况。

剑指offer57 删除链表中重复的结点