链表构建过程中输入数据时程序直接停止

#include <stdio.h>
#include <stdlib.h>
#define ElementType int
typedef struct LNode *List;
struct LNode{
ElementType data;
List Next;
};
void CreatEmpty(List Ptrl)
{
Ptrl=(List) malloc(sizeof(struct LNode));
Ptrl->Next=NULL;
}

void WriteNum(List Ptrl)
{
List p,s;
p=Ptrl;

int number,i;

scanf("%d",&number);

int a[number];
printf("1\n");
for(i=0;i<number;i++)
{
    scanf("%d",&a[i]);
    if(i==0)
    p->data=a[i];
    else{
        s=(List)malloc(sizeof(struct LNode));
        s->data=a[i];
        p->Next=s;
        p=s;
    }
}
p->Next=NULL;

}

List Look(List Ptrl,int i)
{
int k=1;
List p;
p=Ptrl;
while(p&&k<i)
{
p=p->Next;
k++;
}
if(p)
return p;
else
return NULL;
}
int DispList(List Ptrl,int i,ElementType x)
{
List p,s;
if(i==1)
{
s=(List) malloc(sizeof(struct LNode));
s->data=x;
s->Next=Ptrl;
}
else
{
p=Look(Ptrl,i-1);
if(p)
{
s=(List) malloc(sizeof(struct LNode));
s->Next=p->Next;
p->Next=s;
s->data=x;
return 1;
}
else
{
return 0;
}
}

}

void print(List Ptrl)
{
List p;
p=Ptrl;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->Next;
}
}
int main()
{
List Aim;

CreatEmpty(Aim);

WriteNum(Aim);

int i,x;
scanf("%d",&i);
scanf("%d",&x);

if(DispList(Aim,i,x)==1)
print(Aim);
else
printf("error!");
return 0;

}
帮忙看看 WriteNum函数里输入一个数据就停止运行了,,好像是内部地址赋值除了错误,我不知道为什么