题目描述:

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.

删除连表中的重复元素, 比较简单. 要注意不能造成内存泄漏.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 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) {
ListNode *node = head, *true_next;

while(node){
while(node->next != NULL && node->next->val == node->val){
ListNode *toDel = node->next;
node->next = node->next->next;
delete toDel;
}
node = node->next;
}

return head;
}
};