【剑指Offer】面试题57:删除链表中重复的结点
来源:互联网 发布:捷通华声语音合成软件 编辑:程序博客网 时间:2024/06/05 06:35
一:题目描述
在一个排序的链表中,如何删除重复的结点?
如 1->2->3->3->4->4->5
删除重复的结点后链表变成:
1->2->5
二:解题思路
如果当前节点的值与下一个结点的值相同,那么他们就是重复的结点,都可以被删除。
为了保证删除后链表仍然是相连的没有断开,我们要把当前节点的前一个节点和侯敏值比他大的结点相连。、
需要注意:
1.输入空链表
2.删除的结点可能是头结点
3.删除后链表可能为空。
三:代码实现
ListNode* deleteRepeatNode(ListNode * head){if (head == NULL)return NULL;ListNode* deletedHead = head;ListNode* pPreNode = NULL;ListNode* pNode = head;while (pNode != NULL){ListNode* pNext = pNode->next;bool needDelete = false;if (pNext != NULL && pNext->val == pNode->val)needDelete = true;if (!needDelete){pPreNode = pNode;pNode = pNode->next;}else{int val = pNode->val;ListNode* pToBeDel = pNode;while (pToBeDel != NULL && pToBeDel->val == val){pNext = pToBeDel->next;//删除指针空间,并将指针置为NULL,防止野指针现象delete pToBeDel;pToBeDel = NULL;pToBeDel = pNext;}//原始头结点被删除if (pPreNode == NULL)deletedHead = pNext;elsepPreNode->next = pNext;pNode = pNext;}//else}//whilereturn deletedHead;}
阅读全文
0 0
- 剑指offer-面试题57:删除链表中重复的结点
- 剑指offer--面试题57:删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 剑指offer-面试题57-删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 剑指offer面试题57 删除链表中重复的结点
- 剑指offer面试题[57]-删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 《剑指Offer》学习笔记--面试题57:删除链表中重复的结点
- 【剑指Offer学习】【面试题57:删除链表中重复的结点】
- 剑指Offer系列-面试题57:删除链表中重复的结点
- 《剑指offer》面试题57 删除链表中重复的结点 C++ 实现 以及 错误总结 (指针问题)!!
- 《剑指Offer》面试题57:删除链表中重复的节点
- 面试题57:删除链表中重复的结点
- 面试题57:删除链表中重复的结点
- 剑指offer--删除链表中重复的结点
- 《剑指offer》删除链表中重复的结点
- 1---LeetCode【Two Sum】|C语言|总结
- 菜鸟先飞之JAVA_StringBuffer类
- windows常用快捷键
- C#中获取系统时间的一种方法
- WebSocket安卓客户端实现详解(二)--客户端发送请求
- 【剑指Offer】面试题57:删除链表中重复的结点
- 欢迎使用CSDN-markdown编辑器
- UILabel 详解
- Java for Web学习笔记(七四):国际化i18n(2)Locale Resolver
- iframe在ios滑动不顺畅
- 【Machine Learning】笔记:SVM
- 课程设计--简易电话簿
- 欢迎使用CSDN-markdown编辑器
- 进程之间的通信方式