单链表应用示例

单链表应用示例

ID:20660913

大小:117.50 KB

页数:8页

时间:2018-10-14

单链表应用示例_第1页
单链表应用示例_第2页
单链表应用示例_第3页
单链表应用示例_第4页
单链表应用示例_第5页
资源描述:

《单链表应用示例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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*

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。