gpt4 book ai didi

使用用户输入创建链表会在 CodeBlocks 上返回错误 0xC0000005

转载 作者:行者123 更新时间:2023-11-30 15:21:09 26 4
gpt4 key购买 nike

当我调试并一步一步进行时,一切正常,但是当我运行它时,我的程序在第二次迭代中获取第二个输入后崩溃了。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct node {
int x;
struct node *next, *prev;
};
typedef struct node *node;


int main(void)
{
int n, i;
node head, number, temp;
head = malloc(sizeof(node));
head->prev = NULL;
number = head;

printf("Enter size of list: ");
scanf("%d", &n);

printf("Enter elements of list: ");
for (i=0; i<n; i++)
{
scanf("%d", &number->x);
number->next = malloc(sizeof(node));
temp = number;
number = number->next;
number->prev = temp;
}
number->next=NULL;

number = head;
printf("/nThe list is: ");
while(number->next != NULL)
{
printf ("%d ", number->x);
number=number->next;
}

return 0;
}

我的代码有什么问题吗?提前致谢!

编辑:添加了整个代码。

最佳答案

head = malloc(sizeof(node));

没有。这是错误的。 nodestruct node * 的别名;你没有分配足够的内存。您需要为结构节点分配空间,而不是为指向结构节点的指针分配空间。

这样做:

head = malloc(sizeof(struct node));

或者更好:

head = malloc(sizeof(*head));

这一行也一样:

number->next = malloc(sizeof(node));

替换为:

number->next = malloc(sizeof(struct node));

或者:

number->next = malloc(sizeof(*number->next));

关于使用用户输入创建链表会在 CodeBlocks 上返回错误 0xC0000005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684159/

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