Remove Duplicates from Sorted List II
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
.
思路:
指针操作
代码:
1 ListNode *deleteDuplicates(ListNode *head) { 2 if(!head) 3 return NULL; 4 ListNode *result = NULL, *tail = NULL, *cur; 5 cur = head; 6 while(cur->next){ 7 if(cur->val == cur->next->val){ 8 int tmp = cur->val; 9 while(cur){ 10 if(cur->val != tmp) 11 break; 12 cur = cur->next; 13 } 14 if(!cur) 15 break; 16 } 17 else{ 18 if(!result){ 19 result = cur; 20 tail = cur; 21 } 22 else{ 23 tail->next = cur; 24 tail = tail->next; 25 } 26 cur = cur->next; 27 } 28 } 29 if(tail) 30 tail->next = cur; 31 else 32 result = cur; 33 return result; 34 }