C语言链表不能输出最后一组数据



```c
void train_information()    //输入列车信息 
{
    int n=1;
    line=NULL;
    p1=p2=(struct train *)malloc(sizeof(struct train));
    scanf("%s %s %d%d%d%d%d%f%d",p1->terminal,p1->sequence,&p1->StartTime.year,&p1->StartTime.month,&p1->StartTime.day,&p1->StartTime.hour,&p1->StartTime.minute,&p1->fare,&p1->SpareTicketNum);
    p1->next=NULL;
    while(n<5)
    { 
        n++;
        if(line==NULL)
           line=p1;
        else 
           p2->next=p1;
        p2=p1;
        p1=(struct train *)malloc(sizeof(struct train));
        scanf("%s %s %d%d%d%d%d%f%d",p1->terminal,p1->sequence,&p1->StartTime.year,&p1->StartTime.month,&p1->StartTime.day,&p1->StartTime.hour,&p1->StartTime.minute,&p1->fare,&p1->SpareTicketNum);
        p1->next=NULL;
    }
}
> 

```

你的逻辑有问题啊,第5个节点p1只是完成了创建,但没有加入链表啊


void train_information()    //输入列车信息 
{
    int n=0;
    line=NULL;
    while(n<5)
    { 
        p1=(struct train *)malloc(sizeof(struct train));
        scanf("%s %s %d%d%d%d%d%f%d",p1->terminal,p1->sequence,&p1->StartTime.year,&p1->StartTime.month,&p1->StartTime.day,&p1->StartTime.hour,&p1->StartTime.minute,&p1->fare,&p1->SpareTicketNum);
        p1->next=NULL;
        //
        if(line==NULL)
           line=p1;
        else 
           p2->next=p1;
        p2=p1;
        n++;
    }
}