gpt4 book ai didi

c++ - 在 C++ 中删除链表的最后一个节点

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:22 25 4
gpt4 key购买 nike

我似乎无法弄清楚问题出在哪里,我的代码编译并运行了下面显示的有问题的函数,但是当我尝试显示所有节点的内容时,我得到了这个:

LinkedList.exe 中 0x50CE1F98 (msvcp100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0xFEEEFEEE。

//remove (and cleanup after) the node at the tail of the LinkedList (pHead)
//return a pointer to the head node
ListNode* removeEnd( ListNode* pHead )
{
ListNode* pCurr = pHead;
ListNode* pPrevPtr = NULL;

while (pCurr->pNextNode != NULL)
{
pCurr = pCurr->pNextNode;
pPrevPtr = pCurr->pNextNode;
}


pPrevPtr = NULL;

delete pCurr;

return pHead;
}

最佳答案

它必须是:

while (pCurr->pNextNode != NULL)
{
pPrevPtr = pCurr;
pCurr = pCurr->pNextNode;
}
  1. 循环直到你的 pCurr 到达终点(即下一个节点为 NULL)
  2. pPrevPtr 成为你的新尾部
  3. 在 NULL 旁边设置 pPrevPtr(取消引用旧尾部)

关于c++ - 在 C++ 中删除链表的最后一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com