http://www.lintcode.com/en/problem/remove-duplicates-from-sorted-list/
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
ListNode* current = head;
ListNode* next_next;
if (current == NULL) {
return NULL;
}
while (current->next != NULL) {
if (current->val == current->next->val) {
next_next = current->next->next;
delete current->next;
current->next = next_next;
} else {
current = current->next;
}
}
return head;
}
};
Algorithm:
Traverse the list from the head (or start) node. While traversing, compare each node with its next node. If data of next node is same as current node then delete the next node. Before we delete a node, we need to store next pointer of the node
版权声明:本文为博主原创文章,未经博主允许不得转载。
LintCode - Remove Duplicates from Sorted List
原文地址:http://blog.csdn.net/lionpku/article/details/47046951