删除链表中重复的结点

2020-04-29  本文已影响0人  李伟13

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

第一想法

AC代码

class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead)
    {
        ListNode *q,*n;
        ListNode* p = new ListNode(1);
        p -> next = pHead;
        n = p;
        q = pHead;
        if(q == NULL && q -> next == NULL)
            return q;
        while(q){
            if(q -> next != NULL && q -> next -> val == q -> val){
                while(q -> next != NULL && q -> next -> val == q -> val)
                    q = q -> next;
                p -> next = q -> next;
                q = q -> next;
            }
            else{
                p = p -> next;
                q = q -> next;
            }
        }
        return n -> next;
    }
};
上一篇下一篇

猜你喜欢

热点阅读