56.删除链表中重复的节点——剑指offer
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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) { ListNode* res = new ListNode(-1); ListNode* pre = res; res->next = pHead; ListNode* s = pHead; ListNode* cur =pHead; while(cur != nullptr && cur->next != nullptr){ cur = cur->next; if(cur->val == s->val) { cur = cur->next; while(cur && cur->val == s->val){ cur = cur->next; } pre->next = cur; s = cur; } else { pre = s; s = cur; } } return res->next; } };