题目:
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
题解思路:
方法:引入pre指针,穿针引线
函数代码:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(!head)
{
return head;
}
int flag=0;
ListNode *cur=head;
ListNode *pre=NULL;
while(cur)
{
while(cur->next&&cur->next->val==cur->val)
{
flag=1;
cur=cur->next;
}
if(flag==0)
{
pre=cur;
cur=cur->next;
}
else
{
flag=0;
if(!pre)
{
head=cur->next;
cur=head;
}
else
{
pre->next=cur->next;
//也可以cur=pre->next;
cur=cur->next;
//如果这样就报错
//ListNode *x=cur->next;
//pre->next=x;
//cur=x->next;//这里就报错
//如输入[1,2,3,3,4,4,5],[1,2,4,4,5],答案是[1,2,5]
//如果把cur=x->next改为cur=cur->next就正确输出[1,2,5]
}
}
}
return head;
}
};