删除有序链表中的重复节点2

来源:互联网 发布:vb.net 安卓手机开发 编辑:程序博客网 时间:2024/05/16 14:04

描述:给定一个有序链表,若有一个以上相同节点,则将该元素值的节点均删除。

输入:1->2->2->3->4->4->5

输出:1->3->5

思路:

1.设置3个工作指针,pre=L,cur=L->next,re=L,cur指向当前指针,pre指向当前节点的前继节点,re指向迭代过程中添加节点的位置。

2.迭代比较cur->data与cur->next->data,若相等,则令re=pre,pre=cur,pre指向有重复元素的第一个节点,然后cur=cur->next,迭代删除cur指向节点,直至cur->data!=pre->data,删除pre指向节点,re->next=cur,pre=re.

3.若不等,则re=re->next,pre=re,cur=pre->next.

4.直至cur->next==NULL

class Solution{public:LinkList uniqueTwo(LinkList &L){LinkList re,pre,cur;re=pre=L;cur=L->next;while(cur->next){if(cur->data==cur->next->data){pre=cur;//pre标记第一个重复节点while(cur->data==pre->data)//依次删除后续重复节点{pre->next=cur->next;cur=pre->next;}re->next=cur;//删除第一个重复节点pre=re;}else{re=re->next;pre=re;cur=pre->next;}}}}; 



0 0
原创粉丝点击