LeetCode_Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

  

/**
 * 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) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(head == NULL || head->next == NULL) return head;
		
		ListNode *pre,  *cur;
		pre = head; cur = pre->next;
		while(cur != NULL)
		{
			if(cur->val == pre->val){
				pre->next = cur->next;
				delete cur;
				cur = pre->next;
			}else{
				pre = cur;
				cur = cur->next;
			}
		}
		
		return head;
		
    }
};

  

 

posted @ 2013-04-27 23:39  冰点猎手  阅读(110)  评论(0编辑  收藏  举报