数据结构链表的创建(C语言)

才开始学习数据结构,链表的创建那一章,感觉书上和网上的代码都是没有具体数据的,想自己写一个能有具体数据的,不然也不知道那些函数是对是错哇,可以用头插法把数据填到链表里么,具体怎么搞哇,好难啊啊啊啊

供参考:

#include <stdio.h>
#include <malloc.h>
typedef int EmelType;
typedef struct LNode {
    EmelType      data;
    struct LNode* next;
}LNode, * LinkList;
int  InitList_L(LinkList* L);
void CreatList(LinkList* L, EmelType n);
void PrintList(LinkList L);
int main() 
{
    LinkList L1, L2;
    EmelType i = 0, n1 = 0, n2 = 0;
    InitList_L(&L1);
    InitList_L(&L2);

    printf("L1中的结点个数\n");
    scanf("%d", &n1);
    CreatList(&L1, n1);

    printf("L2中的结点个数\n");
    scanf("%d", &n2);
    CreatList(&L2, n2);

    PrintList(L1);
    PrintList(L2);
    return 0;
}
//初始化
int InitList_L(LinkList* L) 
{
    (*L) = (LinkList)malloc(sizeof(LNode));
    (*L)->next = NULL;
    return 1;
}
//头插法建立单链表
void CreatList(LinkList* L, EmelType n)
{
    int i;
    LNode * p;
    printf("请输入%d个结点的值:", n);
    for (i = n; i > 0; --i) {
        p = (LNode*)malloc(sizeof(LNode));
        p->next = NULL;
        scanf("%d", &p->data);
        p->next = (*L)->next;//插入到表头
        (*L)->next = p;
    }
}
void PrintList(LinkList L)
{
    LinkList p = L->next;
    while (p)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}