user-0 提问: 单链表问题

回复:
user: user-0
content: 是啊，之前只是发了一个录入的模块，最后还是找老师解决的 大佬可不可以问一下为什么把if else 改成 while语句啊，感觉有点懵

user: user-1
content: 引用 1 楼 wowpH 的回复:粘贴到VS中，有三个红色  void insert(LinkList* head, train e) {  	train e = {};  			insert(head, e);基本错误还是调好再发吧。

user: user-2
content: #include <stdio.h> //#include <windows.h> #include <time.h> #include <string.h> #include <stdlib.h>   //定义存储火车信息的结构体 typedef struct train {     char num[10]; //列车号     char startstation[10];  //起始站     char stopstation[10];   //终点站     char starttime[10];     //首发时间     char stoptime[10];      //到达时间     double price;           //票价 }DataType; //定义该结构体  //定义存储结点的结构体  typedef struct LNode {     DataType data; //     struct LNode *next; } LinkList;   //输出列车信息 void out(LinkList *head) {     LinkList *p;     p = head;     printf("输出列车的信息：\n\n");     printf("列车号\t起始站\t终点站\t首发时间\t到达时间\t票价\n");     while(p->next!=NULL)     {         p=p->next;         printf("%s\t %s\t %s\t %s\t\t %s\t\t %.2f\n",p->data.num,p->data.startstation,p->data.stopstation,p->data.starttime,p->data.stoptime,p->data.price);      } }     void insert(LinkList *head,train e) {     LinkList *p,*s;     p = head;     //while(head->next==NULL)     if (head->next==NULL)     {         printf("请先录入列车信息！！！\n");         return;     }     //if(p->next!=NULL){p=p->next;}     while (p->next!=NULL){         p = p->next;     }      //else    // {         s=(LinkList *)malloc(sizeof(LinkList));         s->next=NULL;         printf("列车号为：");         scanf("%s",e.num);         printf("起始站为：");         scanf("%s",e.startstation);         printf("终点站为：");         scanf("%s",e.stopstation);         printf("首发时间：");         scanf("%s",e.starttime);         printf("到达时间：");         scanf("%s",e.stoptime);         printf("票价：");         scanf("%lf",&e.price);         s->data=e;         s->next=p->next;  //插入         p->next=s;         printf("-----------------------------------------\n");     //} }    void enter(LinkList *head) //录入学生信息 {     LinkList *p,*r; //尾插法，p指向新结点，r指向尾结点     int i,n; //n表示列车数     r = head;     printf("请输入要录入的列车数：");     scanf("%d",&n);     printf("请输入列车信息：");     for(i=1;i<=n;i++)     {         p=(LinkList *)malloc(sizeof(LinkList));         p->next=NULL;         printf("列车号为：");         scanf("%s",p->data.num);         printf("起始站为：");         scanf("%s",p->data.startstation);         printf("终点站为：");         scanf("%s",p->data.stopstation);         printf("首发时间：");         scanf("%s",p->data.starttime);         printf("到达时间：");         scanf("%s",p->data.stoptime);         printf("票价：");         scanf("%lf",&p->data.price);         r->next=p;  //工作指针中的数据付给尾结点         r=r->next; //尾结点后移         printf("-----------------------------------------\n");     }  }   void menu()     //管理员菜单 {     //train e={};     train e = {0};     LinkList *head;     head=(LinkList *)malloc(sizeof(LinkList));     head->next=NULL;      int choice=-1;     //用于记录管理员选择     printf("\t\t\t\t\t/**********欢迎来到管理员系统**********/\n");     printf("\t\t\t\t\t请选择您要进行的操作：\n");     printf("\t\t\t\t\t1、查看所有列车信息\n");     printf("\t\t\t\t\t2、增加列车信息\n");     printf("\t\t\t\t\t3、删除列车信息\n");     printf("\t\t\t\t\t4、修改列车信息\n");     printf("\t\t\t\t\t5、查找列车信息\n");     printf("\t\t\t\t\t6、录入列车信息\n");     printf("\t\t\t\t\t0、退出系统\n");      while(choice!=0)     {         printf("请选择你要进行的操作（0-6）:");         scanf("%d",&choice);         printf("\n");         switch (choice)         {             case 1:                 printf("基本列车信息如下：\n");                 out(head);                 break;             case 2:                 //insert(head,e);                 insert(head, e);                 break;             case 3:                  break;             case 4:                   break;             case 5:                  break;             case 6:                 enter(head);                 break;             case 0:                 system("cls");      //清屏                 printf("成功退出系统！！\n");                 exit(0);             default :                 printf("出错！！！！\n");                 // choice1();         }     } }  int main ()      //主函数 {      menu();     system("pause");     //防止闪退     return 0; }  供参考～  挺熟悉的一个代码，之前是不是提出过问题。

user: user-1
content: 粘贴到VS中，有三个红色  void insert(LinkList* head, train e) {  	train e = {};  			insert(head, e);