为什么这个从链表中删除节点的代码不起作用?
Why this code for removing nodes from linked list doesn't work?
我正在研究LeetCode的问题,该问题旨在删除链接的列表元素。
这是一个问题:
- 删除链接列表元素
示例
给定:1 - >2 - >6->3->4->5->6,val = 6
返回:1 - >2 - >3->4->5
这是我的代码:
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* cur = head;
while(cur -> next != NULL && cur -> next -> val != val)
{
cur = cur -> next;
}
cur -> val = cur -> next -> val;
cur -> next = cur -> next -> next;
return head;
}
};
我提交代码时遇到了运行时错误。这个问题真的很简单,但是由于我对C 并不那么熟悉,因此我仍然无法确定错误在哪里。你能帮我吗?
您的代码崩溃,因为循环有两个退出条件:
- 您找到了您要寻找的节点,
- 您在没有找到节点的情况下到达列表的结尾
您的代码假定它是第一个条件,而不是第二条件,因此它会导致cur-> next-> val可能导致崩溃。
您的代码还有其他问题:
- 您需要处理多个项目的删除,如示例 所示
- 您需要通过释放删除的节点来防止内存泄漏
- 当头指向必须删除的节点时,您需要处理一个情况
- 您需要处理列表为空的情况。
相关文章:
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 插入一个基本的单向链表节点似乎破坏了我的 c++ 代码?
- 修改链表主函数代码,用户将在其中输入节点的索引和数据以及正确的消息
- 使用代码块在链表的开头插入节点
- 将节点 js 代码集成到 cpp 库时出错
- 使用简单的代码从分类的LinkedList中删除重复的节点
- 我应该在此代码中更改以显示路由上每个节点的点
- 节点 js 我可以从用 C++ 编写的 windows 命令行应用程序中获取退出代码
- 我是C++新手。我在此代码中遇到错误,无法使用 SwapNodes 函数C++创建链表。该函数不交换节点
- 我正在尝试实现 BFS 并通过边缘计算所有访问的节点。但是我的代码给了我 0 计数,除了第一个
- 为什么这个从链表中删除节点的代码不起作用?
- C++:尝试将新节点添加到链表会产生"线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)"错误
- 为什么这段代码没有在二叉搜索树中插入节点
- c ++作业 - 在链接列表代码中初始化节点的正确方法
- 用于删除链接列表的节点的伪代码
- 节点代码或算法的泛型树父
- GraphicsMagick代码冻结在节点插件(OSX)中
- 为什么我的代码不允许在二进制搜索树中插入节点
- 为什么此代码不适用于删除链表中的节点?
- 试图打印LinkedList的节点时出现代码错误