C语言数据结构链表问题——管理学生信息

CSDN问答 2022-09-23 10:50:34 阅读数:956

数据结构链表数据语言结构

想问一下,为什么我明明用了while(1),但是编译出来只能循环一次?

#include <stdio.h>#include <stdlib.h> typedef struct{ int sno; int G;}Student;typedef struct LNode{ Student stu; struct LNode*next;} LNode,*LinkList;void save(LinkList&L)//保存文件 { FILE*f; if ((f = fopen("file", "w+")) == NULL){ printf("不能打开文件\n"); exit(1); } LinkList p; p=new LNode; p=L->next; while(p) { fprintf(f,"%d",p->stu.G); fprintf(f,"%d",p->stu.sno); p=p->next; } fclose(f);}void insert(LinkList&L,int i)//插入 { printf("请输入学生信息:\n"); LNode*p,*s; p=new LNode; s=new LNode; s=L->next; scanf("%d %d",&p->stu.sno,&p->stu.G); int j=1; while(s&&j<i) { s=s->next; j++; } p->next=s->next; s->next=p;}void find(LinkList&L)//查找{ printf("请输入要查找的学生的学号:\n"); int num; scanf("%d",&num); LinkList p; p=new LNode; p=L->next; while(p->stu.sno!=num) { p=p->next; } printf("该学生成绩为:%d",p->stu.G); } void del(LinkList&L)//删除 { printf("请输入要删除信息的学生的学号:\n"); int num; scanf("%d",&num); LinkList p,q; p=new LNode; q=new LNode; p=L->next; while(p->stu.sno!=num) { p=p->next; } q=p->next; p->next=q; delete q;}void clear(LinkList&L)//清空 { LinkList p,q; p=new LNode; q=new LNode; p=L->next; while(p) { q=p->next; delete p; p=q; } L->next=NULL;}void print(LinkList&L)//读取所有学生信息 { LinkList p; p=new LNode; p=L->next; while(p) { printf("学号:%d ,成绩:%d",p->stu.sno,p->stu.G); p=p->next; }}void menu(){ printf("save to file \n"); printf("insert into List \n"); printf("find from List <f>\n"); printf("delete from List <d>\n"); printf("clear List <c>\n"); printf("print List 

\n"); printf("exit system <e>\n");}int main(int argc, char *argv[]) { char choice; LinkList L; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; system("color 07"); while(1) { menu(); scanf("%c",&choice); switch(choice) { case 's' :save(L);break; case 'i' :{ int i; printf("请输入要插入的位置:\n"); scanf("%d",&i); insert(L,i); break; } case 'f' :find(L);break; case 'd' :del(L);break; case 'c' :clear(L);break; case 'p' :print(L);break; case 'e' :exit(0); default :printf("error choice\n"); break; } } return 0;}

版权声明:本文为[CSDN问答]所创,转载请带上原文链接,感谢。 https://ask.csdn.net/questions/7789521