C语言单链表初始化问题

通过了编译但是在向单链表里输入第二个数字的时候,程序出错并中止。
跪求大佬解答。
#include
#include

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

void createlist(LinkList head,int n)
{
int i;
LinkList p2;
head=(LinkList)malloc(sizeof(LNode));
for( i=0;i<=n;i++)
{ p2=(LinkList)malloc(sizeof(LNode)); //开辟新结点
p2=p2->next; //连上新结点
}
}
void iolist(LinkList head,int n)
{
int i;
LinkList p;
p=head->next;
for(i=0;i scanf("%d",&p->data);
p=p->next;
}
for(i=0;i printf("%d\n",p->data);
p=p->next;
}
}
int main()
{
int n;
printf("n=");
scanf("%d",&n);
LinkList head;
createlist(head,n);
iolist(head,n);
return 0;
}

图片说明

如果问题得到解决,麻烦点下我回答右边绿色的采纳,谢谢

 #include <stdio.h>
#include <stdlib.h>

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

void createlist(LinkList * head,int n)
{
    int i;

    *head=(LinkList)malloc(sizeof(LNode));
        LinkList p2 = *head;
    for( i=0;i<=n;i++)
     {  p2->next=(LinkList)malloc(sizeof(LNode));  //开辟新结点
           p2=p2->next; //连上新结点
        }
}
void iolist(LinkList head,int n)
{
    int i;
    LinkList p;
    p=head->next;
    for(i=0;i<n;i++){
        scanf("%d",&p->data);
        p=p->next;
    }
    p=head->next;
    for(i=0;i<n;i++){
        printf("%d\n",p->data);
        p=p->next;
    }
}
int main()
{
    int n;
    printf("n=");
    scanf("%d",&n);
    LinkList head;
    createlist(&head,n);
    iolist(head,n);
    return 0;
}