We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#include<stdio.h> #include<stdlib.h> struct Stu{ char name[20]; int id; int age; char sex; int dor_num; int bed_num; struct Stu *next; }; int count = 0; struct Stu *creat() { struct Stu *head = NULL,*end,*pnew; printf("请输入学号、姓名、年龄、性别、宿舍号、床入号(以0结录束):\n"); pnew = (struct Stu*)malloc(sizeof(struct Stu)); scanf("%d",&pnew->id); scanf("%s",&pnew->name); scanf("%d",&pnew->age); scanf("%c",&pnew->sex); scanf("%d",&pnew->dor_num); scanf("%d",&pnew->bed_num); getchar(); while(pnew->id != 0) { count ++; if(1 == count) { pnew->next = head; head = pnew; end = pnew; } else { end->next = pnew; end = pnew; } pnew = (struct Stu*)malloc(sizeof(struct Stu)); scanf("%d%s%d%c%d%d",&pnew->id,&pnew->name,&pnew->age,&pnew->sex,&pnew->dor_num,&pnew->bed_num); getchar(); getchar(); } end->next = NULL; free(pnew); return head; } void print(struct Stu *head) { struct Stu *p; p = head; while(p != NULL) { printf("姓名:%s ",p->name); printf("学号:%d ",p->id); printf("年龄:%d ",p->age); printf("性别:%c ",p->sex); printf("宿舍号:%d ",p->dor_num); printf("床号:%d\n",p->bed_num); p = p->next; } } void inq(struct Stu *head) { struct Stu *p; int num; p = head; printf("请输入要查询的学号:\n"); scanf("%d",&num); while(p != NULL) { if(p->id == num) { printf("姓名:%s ",p->name); printf("学号:%d ",p->id); printf("年龄:%d ",p->age); printf("性别:%c ",p->sex); printf("宿舍号:%d ",p->dor_num); printf("床号:%d\n",p->bed_num); break; } else p = p->next; } } struct Stu *insert(struct Stu *head,struct Stu *p) { struct Stu *pt,*p1; pt = head; if(head == NULL) { head = p; p->next = NULL; } else { while((pt->id < p->id) && (pt->next != NULL)) { p1 = pt; pt = pt->next; } if(pt->id >= p->id) { if(pt == head) { p->next = head; head = p; } else { p1->next = p; p->next = pt; } } else { pt->next = p; p->next = NULL; } count++; } return head; } struct Stu *del(struct Stu *head) { struct Stu *p2=NULL,*p1=NULL; int num; printf("请输入要删除学生的学号:\n"); scanf("%d",&num); p2 = head; if(head == NULL) { printf("空链表\n"); return (head); } else { while((p2->id != num) && (p2->next != NULL)) { p1 = p2; p2= p2->next; } if(p2->id == num) { if(p2 == head) { head = p2->next; } else { p1->next = p2->next ; } } count--; } return head; } void sto(struct Stu *head) { FILE *fp; if((fp=fopen("D:\\dormitory.dat","w")) == NULL) { printf("打开文件失败\n"); exit(0); } fwrite(head,sizeof(struct Stu),count,fp); printf("成功写入\n"); } int main() { struct Stu *pt,*p; pt = creat(); printf("请输入要插入学生的信息:\n"); p=(struct Stu*)malloc(sizeof(struct Stu)); scanf("%d",&p->id); scanf("%s",&p->name); scanf("%d",&p->age); scanf("%c",&p->sex); scanf("%d",&p->dor_num); scanf("%d",&p->bed_num); getchar(); pt = insert(pt,p); pt = del(pt); inq(pt); print(pt); sto(pt); system("pause"); return 0; }
The text was updated successfully, but these errors were encountered:
点评:
修改!
Sorry, something went wrong.
No branches or pull requests
The text was updated successfully, but these errors were encountered: