Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2 Output: 1->2
分析:
删除排好序的链表中重复的项。若链表为空或者只有一个元素,直接返回;否则定义一个结点,从头开始遍历,依次比较相邻结点的值,若相等,删除其中一个结点即可;否则跳到下一结点,继续比较。
/**
* 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) {
if(!head || !head->next)
return head;
ListNode* h1 = head;//定义指针指向第一个元素
while(h1 && h1->next)
{
if(h1->val == h1->next->val)
{
ListNode* tmp = h1->next;
h1->next = h1->next->next;
delete tmp;
}
else
h1 = h1->next;
}
return head;
}
};