C语言链表输入输出并且排序 我现在只能是全部输入 然后排序 然后输出,但是想输入一个就进行排序输出



#include<stdio.h>
#include<malloc.h>
typedef struct node
{
    int data;
    struct node *next;
}LNode,*LinkList;
LinkList Creat(void)
{
    LinkList H,p1,p2;
    int n;
    n=0;
    p1=p2=(LinkList)malloc(sizeof(LNode));
    printf("Input:");
    scanf("%d",&p1->data);
    H=NULL;
    while(p1->data!=0)
    {
        n=n+1;
        if(n==1)
            H=p1;
        else
            p2->next=p1;
            p2=p1;
            p1=(LinkList)malloc(sizeof(LNode));
            scanf("%d",&p1->data);
}
    p2->next=NULL;
    return(H);
}

LinkList Sort(LinkList SL)
{
    LinkList p,q;
    int temp;
    for(p=SL;p!=NULL;p=p->next)
    {
        for(q=p->next;q!=NULL;q=q->next)
        {   
            if(p->data>q->data)
            {
                temp=q->data;
                q->data=p->data;
                p->data=temp;
            }
        }
    }
    return SL;
}


int main()
{
    LinkList L,S,K;
    L=Creat();

    Sort(L);
    printf("Output:\n");
    for(K=L;K!=NULL;K=K->next)
        printf("%d ",K->data);

    return 0;
}

目前是可以进行输入全部,进行排序,然后输出,可不可以帮忙改一下,输入一个就进行排序输出