gpt4 book ai didi

c - 为什么在 C 中遍历单链表时 NULL 指针检查不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:26 25 4
gpt4 key购买 nike

我正在尝试从堆中打印。如果遇到 NULL 指针,我应该打印 NULL;否则,打印它的值。

示例输出:

1   [2]
2 null
3 null
4 [7, 3]
5 null
6 [7]

但是我的代码总是因为取消引用 NULL 指针而崩溃。

这是我编写的测试代码:

void printResult(IntList* intL, int nNode, int nEdge)
{
int i;
for (i; i <= 10; i++)
{
if (intRest((intL))
{
printf("%d", intFirst((intL)[i]));
intRest((intL)[i]);
}
else
printf(" NULL ");
}
}

//Here is the definition of functions:
//First
int intFirst(IntList oldL)
{
return oldL->element;
}

/** rest
*/
IntList intRest(IntList oldL)
{
return oldL->next;
}
//=================
struct IntListNode
{
int element;
IntList next;
};

//===================
typedef struct IntListNode * IntList;

最佳答案

你有一个由节点组成的单链表,这些节点没有存储在连续的内存块中(它们相当分散),因此尝试以这种方式遍历其元素:

for (i; i <= 10; i++)
printf("%d", intFirst((intL)[i]));

导致未定义的行为,因为您正在访问错误的内存。你应该这样做:

struct IntListNode * ptr = *intL;
while (ptr) {
printf("%d", ptr->element);
ptr = ptr->next;
}

关于c - 为什么在 C 中遍历单链表时 NULL 指针检查不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19415791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com