欢迎来到天天文库
浏览记录
ID:20660913
大小:117.50 KB
页数:8页
时间:2018-10-14
《单链表应用示例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学生成绩管理以单链表作为存储结构,设计和实现某班某门课程成绩管理的完整程序。程序要求完成如下功能:(1)创建成绩链表,学生数据包含学生的学号、姓名和成绩。(2)可以在指定学号学生前插入学生成绩数据。(3)可以删除指定学号的学生数据。(4)可以计算学生的总数。(5)可以按学号和姓名查找学生。(6)可以显示所有学生的成绩。(7)可以把学生成绩按从高到低的顺序排列。此处的设计思想基本与顺序表相同,只是对保存学生成绩的线性表采用不同的存储结构实现。本例中用到的学生数据也是程序运行时由用户从键盘输入,保存到一个单链表中。学生结构体类型的定义与顺序表应用举例处的定义相同,用C语言描述如下
2、:typedefstructStudent/*学生类型定义*/{intscore;/*成绩*/charsno[5],sname[8];/*学号,姓名*/}Student;当学生的学号为“#”时,也是表示数据输入的结束。单链表中保存的数据元素均为学生Student类型,则单链表定义如下:typedefstructNode/*结点类型定义*/{StudentstudentInfo;/*学生信息*/structNode*next;/*指向后继元素的指针域*/}LinkList;对学生的成绩按从高到低排序时,使用的也是直接插入排序思想。此外,为了排序后还能在原单链表上继续进行操作,这
3、里是把单链表中的内容复制到一个新单链表中,对新单链表排序,原单链表不变。下面是以单链表作为存储结构实现的学生某门课程成绩管理的完整C语言程序。#include#include#include#includetypedefstructStudent/*学生类型定义*/{intscore;/*成绩*/charsno[5],sname[8];/*学号,姓名*/}Student;typedefstructNode/*结点类型定义*/{StudentstudentInfo;/*学生信息*/structNode
4、*next;/*指向后继元素的指针域*/}LinkList;voiddisplay(LinkList*p)/*在屏幕上显示一个学生的成绩信息*/{printf("nottnamettscore:");printf("%s",p->studentInfo.sno);/*打印学号*/printf("tt");printf("%s",p->studentInfo.sname);/*打印姓名*/printf("tt");printf("%-4d",p->studentInfo.score);/*打印成绩*/}voiddisplayAll(LinkL
5、ist*L)/*在屏幕上显示所有学生的成绩信息*/{LinkList*p;p=L->next;printf("nottnamettscore:");while(p){printf("%s",p->studentInfo.sno);/*打印学号*/printf("tt");printf("%s",p->studentInfo.sname);/*打印姓名*/printf("tt");printf("%-4d",p->studentInfo.score);/*打印成绩*/p=p->next;}}LinkList*inputdata()/*输入学生
6、信息*/{LinkList*s=NULL;/*s是指向新建结点的指针*/charsno[5];/*存储学号的数组*/printf("");printf("no:");scanf("%s",sno);/*输入学号*/if(sno[0]=='#')/*#结束输入*/returns;s=(LinkList*)malloc(sizeof(LinkList));strcpy(s->studentInfo.sno,sno);if(strlen(sno)>4)/*如果sno字符个数大于等于5,因为字符串没有' '结束标志,在读数据时将把姓名字符一起读到sno数组,因此做了如下处理*/
7、s->studentInfo.sno[4]=' ';printf("name:");scanf("%s",s->studentInfo.sname);/*输入姓名*/printf("score:");scanf("%d",&s->studentInfo.score);/*输入成绩*/returns;}LinkList*createTailList()/*以尾插法建立带头结点的学生信息单链表*/{LinkList*L,*s,*r;/*L头指针,r尾指针,s是指向新建结点的指针*/L=(LinkList*
此文档下载收益归作者所有