我正在编写一个程序(在C中)来实现一个自引用链表。我已经编写了一些代码并将其编译,但现在我遇到了分段错误,我不明白为什么。以下是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
struct Node {
int value ;
struct Node *next;
};
void insert(int x, struct Node **pL);
void printList(struct Node *L);
typedef int BOOLEAN;
int main(int argc, char *argv[]) {
int i;
struct Node *L;
for(i = 3 ; i < 20; i+= 2)
insert(i,(&L));
printList(L);
return 0;
}
void insert(int x, struct Node **pL) {
if((*pL) == NULL)
{
(*pL) = malloc(sizeof(struct Node));
(*pL)->value = x;
(*pL)->next = NULL;
} else {
insert(x, &((*pL)->next));
}
}
void printList(struct Node *L) {
printf("%d\n", (L)->value);
if(((L)->next) != NULL) {
printList((L)->next);
}
}
答案 0 :(得分:3)
您没有初始化L
,然后通过insert
在*pL
中使用它。尝试:
struct Node *L = NULL;