【发布时间】:2023-03-17 15:56:01
【问题描述】:
我正在创建 C 程序,通过使用 while 循环遍历来将链表中节点中的值相加。
我编写了以下代码:
#include <stdio.h>
int main (void)
{
struct entry
{
int value;
struct entry *next;
};
struct entry n1, n2, n3;
struct entry *list_pointer = &n1;
int sum;
n1.value = 100;
n1.next = &n2;
n2.value = 200;
n2.next = &n3;
n3.value = 300;
n3.next = (struct entry *) 0; // Mark list end with null pointer
while ( list_pointer != (struct entry *) 0 ) {
sum += list_pointer->value;
list_pointer = list_pointer->next;
}
printf ("%i\n", sum);
return 0;
}
但是我得到以下输出:
33367
而不是得到 600 作为输出
【问题讨论】:
-
你从未初始化过 sum,所以它的值是未定义的。它包含现在存储它的堆栈上的任何垃圾。你应该做
int sum = 0。此外,请不要使用嵌套结构声明,除非您有充分的理由这样做(在这种情况下,您应该将entry拉出main)。 -
谢谢,现在可以完美运行了 :)
-
@szczurcio:为什么不将此评论作为答案?
-
@alk 完成,感谢您的建议。
标签: c list struct linked-list nodes