面试题18: 删除链表节点:删除链表中重复的节点
生活随笔
收集整理的這篇文章主要介紹了
面试题18: 删除链表节点:删除链表中重复的节点
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*******************************************************************
*《劍指Offer——名企面試官精講典型編程題》C++代碼
*
* htfeng
* 2018.09.28
*
* 面試題18: 刪除鏈表節(jié)點(diǎn)
* 題目二:刪除鏈表中重復(fù)的節(jié)點(diǎn),在一個(gè)排序的鏈表中如何刪除重復(fù)的節(jié)點(diǎn)。
*
* 分析:從頭遍歷整個(gè)鏈表,如果當(dāng)前節(jié)點(diǎn)的與下一個(gè)節(jié)點(diǎn)的值相同,那么他
* 們就是重復(fù)的節(jié)點(diǎn),都可以被刪除。
*******************************************************************/
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;}}}
};
轉(zhuǎn)載于:https://www.cnblogs.com/htfeng/p/9931711.html
總結(jié)
以上是生活随笔為你收集整理的面试题18: 删除链表节点:删除链表中重复的节点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自我学习的技巧和建议
- 下一篇: 计算机网络(谢希仁 第七版) 数据链路层