从链表中删除数据
delete data from linked list
我正试图从链接列表中删除。但是,如果我试图删除第一个元素,它似乎不起作用。
if (found)
{
if (prev == NULL)
{
prev = head;
prev -> next = curr -> next;
delete curr;
}
else
{
prev -> next = curr -> next;
delete curr;
}
}
return found;
如果我要从中间或尾部的某个位置删除,findNode函数就会起作用。但我发现,如果我从尾部删除,我必须将next设置为NULL,对吗?
问题是可能您实际上没有将head
更改为指向列表的新头。您必须更改head
:
if (prev == NULL)
{
head = head->next; // Set `head` to point to the next node, i.e. the new `head`
delete curr;
}
假设findNode
是正确的,并将prev
设置为curr
之前的节点(可能需要考虑双链表),则
if (prev == NULL)
{
prev = head;
prev -> next = curr -> next;
delete curr;
}
不正确。因为当prev
为NULL时,它是找到的头节点。
所以代码应该是
if (prev == NULL)
{
head = head->next;
delete curr;
}
相关文章:
- 从 Typedef 数据类型中删除常量
- 从输入中删除重复项,而不使用任何数据结构
- 删除使数据处于"错误状态"的默认构造函数的模式?
- 从自定义数据类型向量中删除重复元素
- 如何使用C++删除/更新txt文件中的特定数据
- 如何使用C++删除/更新txt文件中的特定数据?
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- C++ - 按自定义数据类型向量的值删除元素
- 如何从 txt 文件中删除数据/内容
- 如何通过其持有的数据从链表中删除某个节点?
- 基于给定字符串数据类型的链表删除节点
- 如何在 C++ 中使用删除运算符删除单个数据
- 如何在每次循环迭代期间生成向量,存储数据,然后删除该向量?
- 如何从C ++的输出中删除垃圾数据(垃圾数据)
- 如何从 HTTP 响应中删除垃圾数据
- C++ 类析构函数删除部分但不是全部成员数据
- 在向量上调用 clear() 实际上不会删除 data() 中的数据?
- SOCAT,将TCP套接字转发到Unix套接字,将recvmsg()更改为read(),删除辅助数据
- 如何删除字符串中的所有空格并将数据存储在两者之间
- 筛选器重复列表-列出重复数据删除