我正在尝试从文本文件中读取数字并创建一个双向链表。我对理论上的双链表工作有一个很好的理解,但我正在努力应用。我知道我可能试图取消引用NULL指针或指出超出范围。但是,我似乎无法确定究竟在哪里。
它输出第一个数字,然后在if
/ else
语句处给我一个段错误。
#include<stdio.h>
#include<stdlib.h>
struct node {
int val;
struct node *next;
struct node *prev;
};
struct list {
struct node *head;
struct node *tail;
};
int main()
{
struct node *temp = NULL;
struct list *l = NULL;
FILE *fileptr;
char filename[20], num[3];
printf("Enter filename: ");
scanf("%s", filename);
fileptr = fopen (filename, "r");
while(fscanf(fileptr, "%s", num) != EOF)
{
printf("Number is: %d\n", atoi(num));
temp = (struct node *) malloc(sizeof(struct node));
printf("HELLO 1\n");
temp->val = atoi(num);
printf("HELLO 2\n");
if(l->tail == NULL)
{
l->head = temp;
l->tail = temp;
}
else
{
l->tail->next = temp;
temp->prev = l->tail;
l->tail = temp;
}
}
return 0;
}
答案 0 :(得分:1)
struct list * l = NULL;你没有为l
分配任何内存是错误的你可以做
struct list *l = ( struct list *)malloc(sizeof(struct list));
l->head = NULL;
l->tail = NULL;
或者你可以尝试
struct list l = {0}; and later use l.head or l.tail