面试题18: 删除链表节点:删除链表中重复的节点
生活随笔
收集整理的這篇文章主要介紹了
面试题18: 删除链表节点:删除链表中重复的节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*******************************************************************
*《劍指Offer——名企面試官精講典型編程題》C++代碼
*
* htfeng
* 2018.09.28
*
* 面試題18: 刪除鏈表節點
* 題目二:刪除鏈表中重復的節點,在一個排序的鏈表中如何刪除重復的節點。
*
* 分析:從頭遍歷整個鏈表,如果當前節點的與下一個節點的值相同,那么他
* 們就是重復的節點,都可以被刪除。
*******************************************************************/
struct ListNode {int m_nValue;ListNode* m_pNext;
};class Solution {
public:void DeleteDuplication(ListNode** pHead) {if (pHead == nullptr || *pHead == nullptr)return;ListNode* preNode = nullptr;ListNode* pNode = *pHead;while (pNode != nullptr) {ListNode* pNext = pNode->m_pNext;bool needDelete = false;if (pNext != nullptr && pNext->m_nValue == pNode->m_nValue)needDelete = true;if (!needDelete) {preNode = pNode;pNode = pNode->m_pNext;}else {int value = pNode->m_nValue;ListNode* pToBedel = pNode;while(pToBedel != nullptr && pToBedel->m_nValue == value) {pNext = pToBedel->m_pNext;delete pToBedel;pToBedel = nullptr;pToBedel = pNext;}if (preNode == nullptr)*pHead = pNext;elsepreNode->m_pNext = pNext;pNode = pNext;}}}
};
轉載于:https://www.cnblogs.com/htfeng/p/9931711.html
總結
以上是生活随笔為你收集整理的面试题18: 删除链表节点:删除链表中重复的节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自我学习的技巧和建议
- 下一篇: 【JavaFx教程】第三部分:与用户的交