include #include #include #include //getche()用到int t=2; //用于计数int gym_num=0;struct gym_node{ char num[15]; //会员号 char name[10]; int age; char sex[2]; char hobby[20]; char time[10]; char tel[15]; struct gym_node *next;} node;struct gym_node *head,*newN,*tail;//---------------------------struct gym_node *gym_create()//建立链表函数,返回指针的函数{ char num[15]; //会员号 char name[10]; int age; char sex[2]; char hobby[20]; char time[10]; char tel[15]; if(head==NULL)//创建第一个结点,并输入数据 { printf("开始创建链表第一个结点\n"); printf("请输入第1个会员的会员号\t姓名\t年龄\t性别\t运动爱好\t会员卡有效期\t联系方式\n"); printf("如001 蔡徐坤 21 男 篮球 20200617 69453783\n"); printf("请输入会员号:\n"); scanf("%s",num); printf("请输入会员的名字:\n"); scanf("%s",name); printf("请输入会员的年龄:\n"); scanf("%d",&age); printf("请输入会员的性别(男请输入0 ;or 女请输入1;):\n"); scanf("%s",sex); printf("请输入会员的运动爱好:\n"); scanf("%s",hobby); printf("请输入会员卡的有效期至:\n"); scanf("%s",time); printf("请输入会员的联系方式:\n"); scanf("%s",tel); newN=(struct gym_node *)malloc(sizeof(struct gym_node)); strcpy(newN->num,num); strcpy(newN->name,name); strcpy(newN->sex,sex); strcpy(newN->hobby,hobby); strcpy(newN->time,time); strcpy(newN->tel,tel); newN->age=age; newN->next=NULL; //给next指针赋值 head=newN; //头指针指向第一个结点 tail=newN; //让尾指针指向新结点 }//继续创建后续结点,并输入数据 while(1) { printf("请依次输入第%d个会员会员号、姓名、年龄、性别、运动爱好、会员卡有效期、联系方式:",t++); printf("(如果会员号为0,则输入结束)\n"); printf("请输入会员号:\n"); scanf("%s",num); if(strcmp(num,"0")==0)//如果会员号为0,则输入结束,退出循环 { t--; break; } else //循环创建链表新结点 { printf("请输入会员的名字:\n"); scanf("%s",name); printf("请输入会员的年龄:\n"); scanf("%d",&age); printf("请输入会员的性别(男请输入0 ;or 女请输入1;):\n"); scanf("%s",sex); printf("请输入会员的运动爱好:\n"); scanf("%s",hobby); printf("请输入会员卡的有效期至:\n"); scanf("%s",time); printf("请输入会员的联系方式:\n"); scanf("%s",tel); newN=(struct gym_node *)malloc(sizeof(struct gym_node)); strcpy(newN->num,num); strcpy(newN->name,name); strcpy(newN->sex,sex); strcpy(newN->hobby,hobby); strcpy(newN->time,time); strcpy(newN->tel,tel); newN->age=age; //给分数赋值 newN->next=NULL; //给next指针赋值 tail->next=newN; //非空表,将新结点链接到表尾结点之后 tail=newN; //让尾指针指向新结点 gym_num++; } } return head;//将链表的头指针返回给主调函数 }void gym_print(struct gym_node *head) //输出链表数据的函数{ struct gym_node *p=head;//使指针p指向链表的第一个结点 if(p==NULL) //如果链表为空 { printf("会员信息为空!\n"); return; } printf("会员号\t姓名\t年龄\t性别\t运动爱好\t会员卡有效期\t联系方式\n"); //打印表头 while(p!=NULL) { printf("%s\t%s\t%d\t%s\t%s\t\t%s\t%s\n",p->num,p->name,p->age,p->sex,p->hobby,p->time,p->tel); //输出 p=p->next; //使指针p指向当前结点的下一个结点 }}void gym_modify(struct gym_node *head){ char num[15]; struct gym_node *p=head;//使指针p指向链表的第一个结点 if(head==NULL) { printf("会员信息为空!\n"); return; } printf("请输入要修改的会员的会员号:"); scanf("%s",num); while(p!=NULL && strcmp(p->num,num)!=0)//查找会员 { p=p->next; //使指针p指向当前结点的下一个结点 } if(p!=NULL) //如果找到了该学号的会员,则修改 { printf("修改会员号为%s的会员",num); printf("请依次输入要修改的会员号、姓名、年龄、性别、运动爱好、会员卡有效期、联系方式:\n"); printf("(如19980802,蔡徐坤,21,男,篮球,20200617,69453783)\n"); printf("请输入修改后会员号:\n"); scanf("%s",p->num); printf("请输入修改后会员的名字:\n"); scanf("%s",p->name); printf("请输入修改后会员的年龄:\n"); scanf("%d",&p->age); printf("请输入修改后会员的性别(男请输入0 ;or 女请输入1;):\n"); scanf("%s",p->sex); printf("请输入修改后会员的运动爱好:\n"); scanf("%s",p->hobby); printf("请输入修改后会员卡的有效期至:\n"); scanf("%s",p->time); printf("请输入修改后会员的联系方式:\n"); scanf("%s",p->tel); } else { printf("未找到该会员号的会员!\n"); }}struct gym_node *gym_delete(struct gym_node *head)//删除函数{ char num[15]; struct gym_node *p=head,*p1; if(p==NULL) { printf("会员信息为空!\n"); return head; } printf("请输入要删除的会员的会员号:"); scanf("%s",num); while(p!=NULL && strcmp(p->num,num)!=0)//查找要删除的会员 { p1=p; //保存p至p1 p=p->next; //使指针p指向当前结点的下一个结点 } if(p!=NULL)//找到了该学号的会员 { if(p==head) { head=p->next; } else { p1->next=p->next; } free(p);//删除,释放 gym_num--; printf("已经删除该会员!"); } else { printf("未找到该学号的会员!\n"); } return head;}void gym_name(struct gym_node *head);void gym_num1(struct gym_node *head);void gym_select(struct gym_node *head){ int a; printf("请选则查询的方法:(会员号输0;or 姓名输1;)\n"); scanf("%d",&a); i。