troubleasy

导航

 

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
    ListNode* deleteDuplication(ListNode* pHead)
    {
        //这里的重复节点与例题中类似,连续出现
        //if(pHead==NULL) return pHead;
        //考虑全链表重复情况
        ListNode*head=new ListNode(0);
        head->next=pHead;
        ListNode*p=head,*pre=head;
        while(p&&p->next)
        {
            
            if(p->val==p->next->val)
            {
                while(p&&p->next&&p->val==p->next->val)
                p=p->next;  
             
                      pre->next=p->next;
                    //非删除情况
                  
            }else
            {
               pre=p;
            }
                p=p->next;
        }
        return head->next;
    }
posted on 2020-05-29 16:23  troubleasy  阅读(85)  评论(0编辑  收藏  举报