博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
56、剑指offer--删除链表中重复的结点
阅读量:4673 次
发布时间:2019-06-09

本文共 1622 字,大约阅读时间需要 5 分钟。

题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
 
解题思路:从头遍历整个链表,如果当前结点和下一结点值相同,则应当删除。为了保证结点不断,需要保存pre结点,然后找到不相等的next,pre->next = next;注意删除的是头结点的情况,单独处理。
1 /* 2 struct ListNode { 3     int val; 4     struct ListNode *next; 5     ListNode(int x) : 6         val(x), next(NULL) { 7     } 8 }; 9 */10 class Solution {11 public:12     ListNode* deleteDuplication(ListNode* pHead)13     {14         if(pHead == NULL)15             return NULL;16         ListNode *pPreNode = NULL;17         ListNode *pNode = pHead;18         while(pNode != NULL)19         {20             ListNode *pNext = pNode->next;21             bool needDelete = false;22             if(pNext != NULL && pNext->val == pNode->val)23                 needDelete = true;24             if(!needDelete)//不等25             {26                 pPreNode = pNode;27                 pNode = pNode->next;28             }29             else//相等该删除30             {31                 int value = pNode->val;32                 ListNode *pToBeDel = pNode;33                 while(pToBeDel != NULL && pToBeDel->val == value)34                 {35                     pNext = pToBeDel->next;36                     delete pToBeDel;37                     pToBeDel = NULL;38                     pToBeDel = pNext;39                 }40                 if(pPreNode == NULL)//头结点被删除了41                     pHead = pNext;42                 else43                     pPreNode->next = pNext;44                 pNode = pNext;45  46             }47         }48         return pHead;49     }50 };

 

转载于:https://www.cnblogs.com/qqky/p/7113021.html

你可能感兴趣的文章
解析漏洞总结
查看>>
HDUOJ-------1052Tian Ji -- The Horse Racing(田忌赛马)
查看>>
对物联网的认识
查看>>
基于HTML5坦克大战游戏简化版
查看>>
hdu 1087
查看>>
In p = new Fred(), does the Fred memory “leak” if the Fred constructor throws an exception?
查看>>
DataBase 之 数据库设计六大范式
查看>>
SSH 整合- 6 - service_serviceImp…
查看>>
Html5 小球键盘移动
查看>>
salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用
查看>>
Deep Residual Network
查看>>
python模块之logging
查看>>
Sharepoint CAML 增删改查 List
查看>>
用Maven创建第一个web项目Struts2项目
查看>>
Python自动化测试 (九)urllib2 发送HTTP Request
查看>>
[SecureCRT] 解决 securecrt failed to open the host key database file 的问题
查看>>
搭建vue-cli脚手架
查看>>
JS兼容性问题
查看>>
Java实现Oracle导出数据到Excel
查看>>
Python相关网站(持续更新)
查看>>