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) {
ListNode *begin=head;
if(begin==NULL||begin->next==NULL) return head;
ListNode * p = head->next, *pp = head;
while(p!=NULL)
{
if(p->val == pp->val)
pp->next = p->next;
else
pp=pp->next;
p=p->next;
}
return head;
}
};