脚本宝典收集整理的这篇文章主要介绍了链表的插入和删除,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
/* * 往链表的末尾插入一个节点和在链表中查找某个节点并删除 */ #include<iostream> using namespace std; struct ListNode { int m_nValue; ListNode* m_pNext; }; //往一个链表的尾部添加一个节点 void AddToTail(ListNode ** pHead, int value) { ListNode* pNew = new ListNode(); pNew->m_nValue = value; pNew->m_pNext = nullptr; if (*pHead == nullptr) { *pHead = pNew; } else { ListNode* pNode = *pHead; while (pNode->m_pNext != nullptr) { pNode = pNode->m_pNext; } pNode->m_pNext = pNew; } } //在链表中查找某个节点,并将该节点删除 void RemoveNode(ListNode** pHead, int value) { if (pHead == nullptr || *pHead == nullptr) { return; } ListNode* pToBeDeleted = nullptr; if ((*pHead)->m_nValue == value) { pToBeDeleted = *pHead; *pHead = (*pHead)->m_pNext; } else { ListNode* pNode = *pHead; while (pNode->m_pNext != nullptr && pNode->m_pNext->m_nValue != value) { pNode = pNode->m_pNext; } if (pNode->m_pNext != nullptr && pNode->m_pNext->m_nValue == value) { pToBeDeleted = pNode->m_pNext; pNode->m_pNext = pNode->m_pNext->m_pNext; } } if (pToBeDeleted != nullptr) { delete pToBeDeleted; pToBeDeleted = nullptr; } } int main() { ListNode* pList = nullptr; AddToTail(&pList, 1); AddToTail(&pList, 2); RemoveNode(&pList, 1); RemoveNode(&pList, 2); return 0; } /* * 我们要特别注意函数的第一个参数pHead是一个指向指针的指针。当我们向一个空链表中 * 插入一个节点的时候,新插入的节点就是链表的头指针。由于此时会改动头指针,因此必须 * 把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然时一个空指针。 */
以上是脚本宝典为你收集整理的链表的插入和删除全部内容,希望文章能够帮你解决链表的插入和删除所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。