1. 程式人生 > >Remove Duplicates from Sorted List II 刪除連結串列中的元素(不保留重複)

Remove Duplicates from Sorted List II 刪除連結串列中的元素(不保留重複)

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *deleteDuplicates(ListNode *head) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        ListNode dummy(-1);
        ListNode *prev=&dummy;
        ListNode *curr=head;
        ListNode *saveptr=&dummy;
        while(curr!=NULL)
        {
            if((prev==&dummy||prev->val!=curr->val)&&(curr->next==NULL||curr->val!=curr->next->val))
            {
                saveptr->next=curr;
                saveptr=saveptr->next;
            }
            prev=curr;
            curr=curr->next;
        }
        saveptr->next=NULL;
        return dummy.next;
    }
};