c - 为什么这个 C 链表会损坏?

标签 c recursion linked-list

我已经 2 年没有上过 CS 课了,我不明白为什么这个简单的链表会损坏:

int exists(linkedlist *list, int val) {
    if(list == NULL)
        return 0;

    if(list->value == val)
        return 1;
    return exists(list->next, val);
}

当我尝试执行 exists(list,33); 列表的第一个值被 33 覆盖。我被迫使用迭代方法并使程序正常运行,但是这个错误我,因为这似乎是一个有效的解决方案。为什么不起作用?

(注意:创建节点时我总是设置list->next = NULL;)

最佳答案

您确定第二个 if 语句是

if(list->value == val)

而不是

if(list->value = val)

这是我能看到的唯一会改变该值的东西。

关于c - 为什么这个 C 链表会损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567367/

相关文章:

c# - 尝试用递归更优雅地解决电话词

javascript - 在javascript中查找大小为2的集合中的所有分区

c - 在C中递归地反转链表

c - 如何制作内部带有 can_frame 结构的 FIFO 缓冲区?

c - 这样用好不好?

delphi - 递归文件搜索线程

java - 从链表中删除重复元素 - Java

c - C 中的链接列表插入放置功能出现问题。

c - C 中不兼容的指针类型

c - `printf` 中的 %*c%*c 是什么?