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
.
思路:
用扫描指针cur扫描整个链表,若cur的下一个节点值与cur节点值相同,则将cur->next指向下下个节点,将cur的下一个节点删除,循环此过程,结束条件为cur->next为空或者前后两节点不相同,cur移动到下一个节点。
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if(head == NULL)return NULL;
ListNode *cur = head;
while(cur != NULL)
{
while(cur->next && cur->next->val == cur->val)
{
ListNode *temp = cur->next;
cur->next = temp->next;
delete temp;
temp = NULL;
}
cur = cur->next;
}
return head;
}
};