删除链表中重复的结点
来源:互联网 发布:gsm是什么卡的网络 编辑:程序博客网 时间:2024/05/16 11:28
ListNode* deleteDuplication(ListNode* pHead) { if ( NULL == pHead || NULL == pHead->next ) return pHead; ListNode* p1 = pHead; ListNode* p2 = pHead->next; ListNode* pPrev = pHead; ListNode* pNewHead = pHead; if ( p1->val == p2->val ){ pPrev = NULL; pNewHead = NULL; } while ( 1 ){ if ( p1->val == p2->val ){//在这个大逻辑中,删除节点 while ( p1->val == p2->val ){ if ( NULL == p2->next ){ if ( NULL == pNewHead ) return NULL; else{ pPrev->next = NULL; delete p1; delete p2; return pNewHead; } } else{ ListNode* tmp = p2; p2 = p2->next; delete tmp; tmp = NULL; } } if ( NULL == pNewHead )pNewHead = pPrev = p2;delete p1;p1 = p2;if ( NULL == p2->next ){if ( pPrev != p2 )pPrev->next = p2;return pNewHead;}else{p2 = p2->next;if ( p1->val == p2->val ){if ( p1 == pNewHead ){pPrev = NULL;pNewHead = NULL;}}}}else{if ( p1 != pPrev )pPrev->next = p1;pPrev = p1;p1 = p1->next;if ( NULL != p2->next )p2 = p2->next;else{pPrev->next = p2;return pNewHead;}} } }
在一个有序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
阅读全文
0 4
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 上阶梯问题
- 智能支付终端功能清单
- react-native实现轮播图
- html标签(一)
- 分布式锁
- 删除链表中重复的结点
- 六大设计原则之单一职责
- 【游戏知识】当你打“王者农药”卡到坑时,你可以这样装X
- 会话管理(Cookie技术和Session技术)
- Fibonacci
- Leetcode 648. Replace Words 替换词语 解题报告
- STL之binary_search的用处
- JavaScript案例之时钟
- 准备 overlay 网络实验环境