删除链表中重复的结点
Posted 修修55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除链表中重复的结点相关的知识,希望对你有一定的参考价值。
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(!pHead || !pHead->next) return pHead; ListNode *dummy = new ListNode(-1); dummy->next = pHead; ListNode *pre = dummy; ListNode *curr = dummy->next; while(curr && curr->next){ if(curr->val == curr->next->val){ while(curr->next && curr->val == curr->next->val){ curr = curr->next; } pre->next= curr->next; curr = curr->next; } else{ pre = curr; curr = curr->next; } } return dummy->next; } };
以上是关于删除链表中重复的结点的主要内容,如果未能解决你的问题,请参考以下文章