题意
删除有序链表中的重复元素
题解
设置一个虚拟的头结点vhead,防止删除链表头结点。
代码
/**
* 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)
return NULL;
ListNode *vhead = new ListNode(0);
vhead->next = head;
ListNode *prev = vhead, *now = head, *next = head->next;
while(next)
{
if(now->val == next->val) // 有重复元素
{
while(next && now->val == next->val)
{
now = now->next;
next = next->next;
}
prev->next = next; //prev用来删除重复元素
}
else
prev = prev->next;
//继续遍历
now = now->next;
if(next)
next = next->next;;
}
return vhead->next;
}
};