头插法创建的单链表打印是会额外打印第一个输入的元素

头插法创建的单链表打印是会额外打印第一个输入的元素
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*Linklist;

Linklist Create(Linklist L){

    LNode *p;
    int x;
    scanf("%d",&x);
    p=(LNode*)malloc(sizeof(LNode));
    p->data=x;
    p->next=L->next;
    L->next=p;
    while(x!=9999)
    {
    p=(LNode*)malloc(sizeof(LNode));
    p->data=x;
    p->next=L->next;
    L->next=p;
    scanf("%d",&x);
}    
    return L;}

void printL(Linklist L){
    LNode *p= L->next;
    while(p){
        printf("%d ",p->data);
        p = p->next;
    }
    return;
}

int main()
{
    Linklist L;
    L=(LNode*)malloc(sizeof(LNode));
    L->next=NULL;
    Create(L);
    printL(L);
    return ;
}
    


运行结果及报错内容

img

是你自己加了两遍第一个数值好不好啊
删掉14-17行就好了,你这段等于把第一个x多加了一遍