从链表c++中删除最后一个节点
Remove last node from linked list c++
当我运行此代码时,它return
是正确的数字,但之后它不会delete
。
我尝试了其他几个功能,但它们也不起作用。我的功能有问题吗?还是应该向外看?
int Stack::remove()
{
clean = head; //clean is what it to be deleted. Head is the beginning
while (clean->next != NULL) //stop at the end of list
{
clean = clean->next; //move it along
}
return clean->number; //this gives me the right number
delete clean; //but when I print list in main, last item is still there
clean = NULL; //something about dangling pointers
}
问题是没有执行return语句之后的ANYTING。
因此,将clean->数值复制到某个临时变量中,删除clean并返回临时变量的值。
您必须将指向要删除的节点的指针设为null——可以是前一个节点中的头指针,也可以是下一个指针。
然后你可以删除它并返回号码。此外,正如Paul所指出的,你必须记住号码,删除节点,然后返回
我一直都是这样做的:
if (head == NULL) {
//return some error condition
}
Node **pclean = &head;
while ((*pclean)->next != NULL) {
pclean = &((*pclean)->next);
}
int ret = (*pclean)->number;
delete *pclean;
*pclean = NULL;
return ret;
这样,我们总是有一个指向节点的指针,这就是我们必须null掉的。
现在,如果这是一个赋值,那么不要交这段代码——你的教授会知道你没有写它。
相关文章:
- 删除链接列表中剩余的最后一个节点
- 避免在使用链接列表从 deque 中删除最后一个节点时出现内存泄漏
- 删除最后一个节点,并将尾部更新到最后一个节点
- 计算列表中与线性链接列表中最后一个节点具有相同数据的节点的数量
- 如何在QT中获取XML文件的最后一个节点
- 交换C 中的第一个和最后一个节点
- 尾部指向最后一个节点
- 从end()函数返回的迭代器中获取BST的最后一个节点
- 删除链接列表中的最后一个节点
- 链表:无法访问最后一个节点,获取 R6010(C++、VS2010)
- 删除双向链表 (C++) 的最后一个节点
- 单链表删除最后一个节点
- 打印链表仅打印最后一个节点
- 删除链接列表的最后一个节点
- 是否可以删除链接列表中的最后一个节点
- 从链表c++中删除最后一个节点
- 更新指向链表中最后一个节点的指针
- 使用递归在单个链表中查找第n到最后一个节点
- 删除列表错误中的最后一个节点
- 访问std::列表上的最后一个节点