我已经 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/