/* [删除链表中重复的结点] [题目] 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 [解析] 主要考代码的能力,注意边界条件的考虑,指针判空等。 */ #include <iostream> #include <vector> #include <algorithm> using namespace std; struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution{ public: ListNode* deleteDuplication(ListNode* pHead){ if(pHead == NULL) return NULL; ListNode *pPrev = NULL; ListNode *pCur = pHead; while(pCur && pCur->next){ ListNode *pNext = pCur->next; if(pNext->val != pCur->val){ pPrev = pCur; pCur = pNext; }else{ // find all duplicate while(pNext && pNext->val == pCur->val) pNext = pNext->next; if(pPrev == NULL){ pHead = pNext; }else{ pPrev->next = pNext; } pCur = pNext; } } return pHead; } }; int main() { return 0; }
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/15259.html