C - 当单个链表中只有 1 个元素时删除节点

标签 c nodes singly-linked-list

嘿伙计们,所以我明白,当链表中有多个元素时要删除节点,您可以从要删除的当前节点中取出前一个节点并将其指向 current->next ,然后你free()当前的Node。

但是我的问题是,当我在一个链接列表中只有一个元素时,当我尝试删除该节点时,我似乎遇到了段错误(核心转储),我假设这是因为在这种情况下 current->next 将指向 NULL (我在这里可能是错的)。另外假设我有一个存储值 5 的节点,我遇到的一个常见问题是不是删除该节点,而是将值更改为 0。

问题: 我不是要求任何人修复我的代码,这就是为什么我决定不发布代码,但我的问题是,当它是链表中的唯一元素时,我将如何处理删除节点?删除链表中只有一个元素的节点与删除链表中有多个元素时有何不同。

非常感谢您的帮助,如果事情不清楚,我很抱歉,但我真的想在提出问题之前先提供背景信息。

最佳答案

您的“链接列表”只是列表第一个元素上的指针。

MyStruct *my_list;

因此,如果 my_list->next 为 null,则意味着列表中只有一个元素。 如果你想删除他,很简单:

free(my_list)
my_list = NULL;

您的列表现在为空(不要尝试阅读此内容;))

关于C - 当单个链表中只有 1 个元素时删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190809/

相关文章:

基于 c 中的 EBP 从堆栈帧调用函数及其参数

c - 为什么一项任务比另一项任务快?

java - ArrayList 和单向链表一样吗?

c - 我的链接列表没有正确添加(不断替换第 3 个位置)- c

C:就缓冲而言,输出例程的效率如何?

c - 数组只添加重复值

c - 在 C 中为节点分配了多少内存?

php - 使用PHP和Xpath解析XML时无法访问子节点

javascript - 如何在 zip 下载开始后压缩 Node js 应用程序中的文件夹?

c - 从文件读取特定字符串时程序执行中断