当我正在调试并逐步进行时,一切正常但是当我运行它时,我的程序在第二次迭代中获取第二个输入后崩溃。这是我的代码:
#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;
}
我的代码有什么问题? 提前谢谢!
编辑:添加了整个代码。
答案 0 :(得分:1)
head = malloc(sizeof(node));
没有。这是错的。 node
是struct node *
的别名;你没有分配足够的内存。您需要为struct node
分配空间,而不是指向struct 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));