1、include
2、EN); scanf("%ld,%f",&p1->num,&p1->score); head=NULL; while(p1->num!=0) { n=n+1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf("%ld,%f",&p1->num,&p1->score); } p2->next=NULL; return(head);//带回链表的头指针 } void print(struct student *h
3、ead)//输出链表 { struct student *p; printf("\nNow,there %d records are:\n",n); p=head; if(head!=NULL) do { printf("%ld %5.1f\n",p->num,p->score); p=p->next; } while(p!=NULL); } void averprintf(struct *head)//平均值输出 { struct student *p; float aver,sum=0,high=0,low=0;
4、long num1; printf("\nNow,the averge score is:\n"); p=head; if(head!=NULL) do { sum=sum+p->score; p=p->next; } while(p!=NULL); aver=sum/n;printf("%5.1f\n",aver);} void highprintf(struct student *p)/*求最高分*/ { int high=p->score; long num1=p->num; do {if
5、 (high
6、 num1=p->num;} p=p->next;}while (p!=NULL); printf("\nThe lowest score is:%d,and its number is:%ld\n",low,num1);} void sort(struct student *head)//学生成绩排序 { struct student *p1,*p2; float i;long t; printf("Students from low to high ranking\n"); p1=head; if(head==NULL) { printf
7、"it is blank\n"); } else { while(p1!=NULL) { p2=p1->next; while(p2!=NULL) { if(p1->score>p2->score) { i=p2->score; p2->score=p1->score; p1->score=i; t=p2->num; p2->num=p1->num; p1->num=p2->num; } p2=p2->next; }
8、p1=p1->next; } } while(p1!=0) { printf("%ld %5.1f\n",head->num,p1->score); head->next; } } struct student *del(struct student *head,long num)//删除节点 {struct student *p1,*p2; if(head==NULL){printf("\nlist null!\n");return head;} p1=head; while(num!=p1->num&&p1->next!=NUL
9、L) {p2=p1;p1=p1->next;} if(num==p1->num) {if(p1==head)head=p1->next; else p2->next=p1->next; printf("delete:%ld\n",num); n=n-1; } else printf("%ld not been found!\n",num);return(head); } struct student *insert(struct student *head,struct student *stud)//插入节点 { struct student *p0,*p1,*
10、p2; p1=head; p0=stud; if(head==NULL) {head=p0;p0->next=NULL;} else {while((p0->num>p1->num)&&(p1->next!=NULL)) {p2=p1;p1=p1->next;} if(p0->num<=p1->num) {if(head==p1)head=p0; else p2->next=p0; p0->next=p1;} else {p1->next=p0;p0->next=NULL;} } n=n+1; return(head); } void main
11、) { struct student *head,*stu; long del_num; printf("input records:\n"); head=creat(); lowprintf(head);//加入排序,最高分,最低分调用函数 highprintf(head); averprintf(head); //删除节点操作 print(head);sort(head);print(head); printf("\ninput the deleted number:"); scanf("%ld",&del_num); wh
12、ile(del_num!=0) {head=del(head,del_num); print(head); printf("input the deleted number:"); scanf("%ld",&del_num);} //插入节点操作 printf("\ninputthe insertd record:"); stu=(struct student *)malloc(LEN); scanf("%ld,%f",&stu->num,&stu->score); while(stu->num!=0) { head=insert(head,stu); print(head); printf("input the inserted record:"); stu=(struct student *)malloc(LEN); scanf("%ld,%f",&stu->num,&stu->score); } }






