C语言单链表调试报错Program received signal SIGSEGV, Segmentation fault

我想要达到的结果

C语言单链表调试报错Program received signal SIGSEGV, Segmentation fault

typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;

//5取值
int GetElem(LinkList L,int i,int *e1){
    int j = 1;
    LinkList p = L->next;
    while(p && jnext;
        j++;
    }
    if(!p||j>i){
        printf("未找到"); 
        return 0;
    }
    e1 = p->data;
    printf("已找到");
    return 1;
}
//9前插法
void CreateList_H(LinkList L,int n){
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    int i = 0;
    while(imalloc(sizeof(LNode));
        printf("请输入要插入的数据");
        scanf("%d",&e->data);
        e->next = L->next;
        L->next = e;
        i++;
    }
}

//5取值
int GetElem(LinkList L,int i,int *e1){
int j = 1;
LinkList p = L->next;
while(p && j<i){
p = p->next;
j++;
}
if(!p||j>i){
printf("未找到");
return 0;
}
e1 = p->data;
printf("已找到");
return 1;
}

//9前插法
void CreateList_H(LinkList L,int n){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int i = 0;
while(i<n){
LinkList e = (LinkList)malloc(sizeof(LNode));
printf("请输入要插入的数据");
scanf("%d",&e->data);
e->next = L->next;
L->next = e;
i++;
}

修改处见注释,供参考:

#include <stdio.h>
#include <stdlib.h>
//结构体
typedef struct LNode{
    int    data;
    struct LNode *next;
}LNode,*LinkList;
//取值
int GetElem(LinkList L,int i,int *e1){
    int j = 1;
    LinkList p = L->next;
    while(p && j < i){    //修改
        p = p->next;
        j++;
    }
    if(!p||j>i){
        printf("未找到\n");
        *e1 = -1;   //修改
        return 0;
    }
    *e1 = p->data;  //修改
    printf("已找到\n");
    return 1;
}
//前插法
void CreateList_H(LinkList* L,int n){ //修改
    (*L) = (LinkList)malloc(sizeof(LNode)); //修改
    (*L)->next = NULL;                //修改
    int i = 0;
    while(i < n){
        LNode* e = (LNode *)malloc(sizeof(LNode));
        printf("请输入要插入的数据");
        scanf("%d",&e->data);
        e->next = (*L)->next;  //修改
        (*L)->next = e;        //修改
        i++;
    }
}