gpt4 book ai didi

c - 如何在单链表 (C) 中正确地添加一个 int?

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

我在我的 .c 文件中定义了这个结构:

typedef struct node
{
// the value to store in this node
int i;

// the link to the next node in the list
struct node* next;
}
node;

我写了一个前置函数,我可以在 main 的 for 循环中使用它来测试一些值:

void prepend(int i)
{
node* newNode = NULL;
if(first->next == NULL)
{
newNode->i = i;
first->next = newNode;
newNode->next = NULL;
}
else
{
newNode->next = first->next;
newNode->i = i;
first->next = newNode;
}
}

我做错了什么?运行程序时出现段错误。

编辑:程序到达 if(first->next == NULL) 时出现错误

最佳答案

该代码在 if/else 的两个分支中取消引用一个名为 newNodeNULL 指针。取消引用 NULL 指针是未定义的行为,在本例中是段错误。使用 malloc() 分配内存,对于 newNode 在使用它之前:

node* newNode = malloc(sizeof(*newNode));
if (newNode)
{
newNode->i = i; /* No need to repeat this in both branches. */
/* ... snip ... */
}

first 在使用之前还必须指向一个有效的 node。记得free()当不再需要时,无论是 malloc()d。

关于c - 如何在单链表 (C) 中正确地添加一个 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16223498/

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