有大佬能帮我看看嘛,用C语言写的“有序链表中插入一个数依然有序”,运行不出结果

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode//结点结构定义
{
    int data;
    struct node *next;
}LNode,*LinkList;
void CreateList(LinkList L,int n)//尾部插入法创建单链表
{
    LinkList p;
    int i;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=n;i>0;--i)
    {
        p=(LinkList)malloc(sizeof(LNode));//生成新结点
        scanf("%d",p);
        p->next=L->next;L->next=p;
    }
}
void ListInsert(LinkList L,int i,int x)
{
    int j;
    LinkList s,p;
    p=L;j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
        exit(0);
    s=(LinkList)malloc(sizeof(LNode));
    s->data=x;
    s->next=p->next;
    p->next=s;
}
int main()
{
    int i,n,x;
    LinkList L,p,q;
    scanf("%d",&n);
    CreateList(L,n);
    scanf("%d",&x);
    p->next=L->next;
    for(i=0;x<L->data;L=L->next,i++);
    ListInsert(L,i,x);
    while(p->next!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    return 0;
}


    

请你提供:

你输入了什么, 输出了什么,哪里和你的预期不符?

 for(i=0;x<L->data;L=L->next,i++);main函数里这里出现错误,在 CreateList(L,n);里L->data 在之前没有赋值。