删除链表中重复的结点
- 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
- 为了便于操作,新加了一个头结点
- 当第一个节点就开始出现重复,不需要额外考虑
- 其他的重复情况出现后,需找到最后一个重复的
- C++ 代码
/*
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 *head = new ListNode(0);
head->next = pHead;
ListNode * pre = head,*p = head->next, *last ;
while(p){
last = p->next;
if(last && p->val == last->val){
while(last && last->val == p->val){
last = last->next;
}
pre->next = last;
p = last;
}
else {
pre = p;
p = last;
}
}
return head->next;
}
};
本文标题:删除链表中重复的结点
本文链接:https://www.haomeiwen.com/subject/jfkjlktx.html
网友评论