单链表头插法输出L初始化放在主函数为什么运行不了

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LNode,*LinkList;
LinkList creat(LinkList L)//头插法建立
{
    LinkList s;
    int i,n,x;
    scanf("%d",n);
    for(i=0; i<n; i++)
    {
        s=(LinkList)malloc(sizeof(LNode));
        s->next=NULL;
 scanf("%d",x);
        s->data=x;
        s->next=L->next;
        L->next=s;

    }
    return L;
}
void PrintList(LinkList L)
{
    LinkList p;
    p=L->next;
    printf("链表元素如下:\n");
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

int main()
{
    LinkList L;

    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    L=creat(L);
    PrintList(L);
    return 0;
}

scanf("%d",&x);