题目
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
删除有序链表中所有重复的元素
代码
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(NULL == head || NULL == head->next)
return head;
ListNode *p1 = head, *p2 = head->next, *h = new ListNode(0);
ListNode *p = h;
int count = 1;
while(p2 != NULL) {
if(p2->val == p1->val) {
p2 = p2->next;
count++;
} else {
if(count == 1) {
p->next = p1;
p = p->next;
}
p1 = p2;
p2 = p2->next;
count = 1;
}
}
if(count == 1) {
p->next = p1;
p = p->next;
}
p->next = NULL;
return h->next;
}
};