C++链表类实现



嘿,我已经用list类和内部节点结构在c++中构建了一个链表的实现。除了从尾部功能中删除节点之外,一切都很好:

void  List::remove_tail()
{
Node* runPtr= new Node;
runPtr = this->head;
while(runPtr->next->next !=nullptr) //this loop is not stopping!
{
runPtr = runPtr->next;
}
this->tail= runPtr;
delete runPtr;
}

由于某种原因while循环没有停止。我错过了什么?

谢谢你的帮助!

  1. 不要为runPtr分配新节点。它是一个指针,应该指向列表中已经分配的元素。你只是在泄露记忆
  2. 在未验证指针是否为null的情况下,不要取消引用指针。runPtr可能为空,runPtr->next也可能为空。在这两种情况下,您都将执行未经授权的内存访问,并导致崩溃或垃圾
  3. 在尝试迭代列表之前,必须初始化指向第一个元素(或null(的head指针
  4. 不更新尾部前面的元素的next指针。在第一次删除后,这将导致一个列表不会停止为null

相关内容

  • 没有找到相关文章

最新更新