gpt4 book ai didi

在C中动态创建链接列表

转载 作者:行者123 更新时间:2023-11-30 18:17:22 24 4
gpt4 key购买 nike

我正在尝试使用结构在 c 中动态创建一个链接列表并打印它。但是我的下面的代码抛出运行时错误,任何人都可以告诉我为什么会收到此错误。这是我的代码。

#include <stdio.h>
struct cnode
{
int value;
struct cnode *next;
};

void print_list(struct cnode* start)
{
while(start->next != NULL)
{
printf("%d->", start->value);
start = start->next;
}
}

int main(void)
{
int i,n,val;
//List length
scanf("%d", &n);

//Head
struct cnode* start;
scanf("%d", &val);
start->value = val;

struct cnode* temp = start;

for (i=1; i<=n-1; i++)
{
struct cnode* node;
scanf("%d", &val);
node->value = val;

temp->next = node;
temp = node;
}
temp->next = NULL;

print_list(start);

return 0;
}

最佳答案

您未能为指向的指针分配内存。您需要调用 malloc 来执行此操作。

struct cnode *start = malloc(sizeof(struct cnode));
if (start == NULL) {
perror("malloc failed");
exit(1);
}

...

struct cnode *node= malloc(sizeof(struct cnode));
if (node == NULL) {
perror("malloc failed");
exit(1);
}

此外,打印列表时,您不会打印最后一个值。

while(start != NULL)
{
printf("%d->", start->value);
start = start->next;
}

完成后不要忘记释放内存。

print_list(start);

while (start != NULL) {
temp = start;
start = start->next;
free(temp);
}

return 0;

关于在C中动态创建链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086782/

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