题目: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
题解思路:
方法:引入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; } };