删除排序链表中的重复元素 II
/**
* 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* node = head;
ListNode* pre = new ListNode(-1);
ListNode* newhead = pre;
pre->next = node;
ListNode* nextnode = NULL;
bool flag = false;
while (node!=NULL&&node->next != NULL)
{
//pre=node;
//ListNode* nenode = node;
while (node->next!=NULL&&node->val == node->next->val)
{
node->next = node->next->next;
flag = true;
}
nextnode = node->next;
if (flag == true)
{
pre->next = nextnode;
//pre=node;
flag = false;
}
else
{
pre = node;
}
node = nextnode;
}
return newhead->next;
}
};