收藏 分销(赏)

学生成绩排序及平均分计算利用c语言链表创建插入删除.doc

上传人:仙人****88 文档编号:7380591 上传时间:2025-01-01 格式:DOC 页数:7 大小:40KB 下载积分:10 金币
下载 相关 举报
学生成绩排序及平均分计算利用c语言链表创建插入删除.doc_第1页
第1页 / 共7页
学生成绩排序及平均分计算利用c语言链表创建插入删除.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
#include<stdio.h> #include<malloc.h> #define NULL 0 #define LEN sizeof(struct student) struct student { long num; float score; struct student *next; }; int n; struct student *creat(void)//创建链表 { struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student*)malloc(LEN); 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 *head)//输出链表 { 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; 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 (high<p->score) {high=p->score; num1=p->num;} p=p->next ;}while (p!=NULL); printf("\nThe highest score is:%d,and its number is:%ld\n",high,num1);} void lowprintf(struct student *p)/*求最低分*/ { int low=p->score; long num1=p->num; do{if (low>p->score) {low=p->score; 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("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; } 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!=NULL) {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,*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() { 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); while(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); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服