C++循环链接列表 - 删除所有节点
C++ Circular Link List - remove all nodes
我正在尝试删除单循环链表中的所有节点。但是我得到以下错误:
malloc: *** error for object 0x1005068f0: pointer being freed was not allocated
以下是函数:
void StudentLinkList::removeAll() {
StudentData *traversePointer = this->head;
while (this->head != nullptr) {
this->head = this->head->getNext();
delete traversePointer;
traversePointer = nullptr;
traversePointer = this->head;
this->size--;
}
}
我在这一行上收到错误:
delete traversePointer;
我的问题是,为什么 traversePointer 没有像错误中所示在 while 循环中分配?
while 应该是:
while(this->size){
循环完成后,设置 this->head = nullptr。无需在循环中设置 traversePoitner = nullptr。
替代版本(我尚未确认这一点(,它不依赖于这个大小是正确的>,只是列表是循环的:
void StudentLinkList::removeAll() {
if(this->head == nullptr)
return;
StudentData *traversePointer = this->head;
StudentData *deletePointer;
do{
deletePointer = traversePointer;
traversePointer = traversePointer->getNext();
delete deletePointer;
}while(traversePointer != this->head);
this->head = nullptr;
this->size = 0;
}
相关文章:
- 为什么我的删除节点函数实际上没有删除节点?
- 我们可以删除链表中静态内存中的节点吗
- 为什么"delete"关键字不删除节点?
- 为什么我的双向链表删除函数会删除多个节点?
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 删除 XML 文件中的子节点C++
- 创建了一个链表,但如何删除 c++ 中的"所有"节点
- 从unordered_map中删除单个节点
- 删除链表中的特定节点
- 在C++中删除双向链表的头节点后出现访问冲突异常
- 删除链表中的节点 - 分段错误
- 删除链接列表中剩余的最后一个节点
- 避免在使用链接列表从 deque 中删除最后一个节点时出现内存泄漏
- 使用函数引用指向节点的指针删除链表中的节点?
- 双向链表 - 无法删除第一个节点
- 双向链表 std::unique_ptr 类在节点删除时无法按预期工作
- BST 节点删除 - 指针未正确删除
- 节点删除功能的链表问题
- 布尔函数始终为真,单向链表中的尾节点删除创建无限循环
- AVL树中节点删除值异常