1.(1997年)
本题要求设计一个学生试卷成绩输入、查询和成绩单输出系统(简称SRS)的数据结构和算法要点。问题描述如下:
要输入到SRS系统中的每一份试卷成绩反映一个学生选修一门课程的考试结果,它包括以下数据项:学号、姓名、课程名、成绩。由于实行了灵活的选课制度,所以每个学生选修多少门课程,选修哪些课程都可以不同。要输入的多份试卷成绩并未按任何数据项排列顺序,它们以任意的顺序被输入到系统中来。
SRS系统要具有以下功能:①试卷成绩插入,将试卷成绩逐个插入到SRS系统的数据结构中。②学生成绩查询,给出学号查找该学生所选修的各门课程的考试成绩。③成绩单输出,按学号递增的顺序依次输出所有学生的学号、姓名,及其所选修的各门课程的课程名和成绩。(为简单起见,假设上述所有工作都在计算机内存中进行。)
请设计SRS系统的数据结构和算法要点,使上述三项操作都有较高的执行效率。从以下方面阐述你的设计:
(1)SRS系统的数据结构(15分)
①数据结构的Pascal语句描述
②数据结构的示意图
③数据结构的简单文字说明
(2)SRS系统的算法要点(10分)
(只要简单的文字说明,不必写出Pascal程序)
①试卷成绩插入
②学生成绩查询
③成绩单输出
(3)简单陈述你的上述设计的理由(5分)
答案:
本题可有多种不同的设计方案,下面给出其中一个较好的方案。
(1)数据结构(15分,其中对三种操作的有效支持各4分,叙述的条理性3分。)
①数据结构的Pascal语句描述
TYPEpptr=↑pnode;
pnode=RECORD
cname:string;
score:0..100;
next:pptr
END;
sptr=↑pnode;
snode=RECORD
sno:integer;
sname:string;
llink,rlink:sptr;
plink:pptr
END;
VARt:sptr;
②数据结构的示意图
9508027Liu٨٨
OS72
OS60
9408023Fang٨٨
9508091Chen ٨
9508010Li
DS85
DB66٨
SE89
AI92٨
DS90
OS95
t
③数据结构的简单文字说明 每个学生结点包含学生的学号和姓名,所有学生结点组织成一棵二叉排序树,用link-rlink法存储。
每份试卷成绩作为一个链表结点,包含课程名和成绩,每个学生的所有试卷成绩结点链接成一个单链表,并且二叉排序树的学生结点中有一个指针指向该单链表的第一个结点。
(2)算法要点(10分,三种操作各3分,叙述的条理性1分)
①试卷成绩插入,根据试卷的学号在二叉排序树中查找该学生结点。若找到,则在该学生结点所指的成绩链表中插入一个成绩结点;若未找到,则先在二叉排序树中插入一个新的学生结点,然后再往这个学生结点所指的(空的)成绩链表中插入一个成绩结点。
②学生成绩查询,根据所给学号在二叉排序树中查找该学生结点,再在该结点所指的成绩链表中沿着指针读出所有成绩。
③成绩单输出。对二叉排序树进行对称序周游,在访问到每个学生结点时输出该结点指向的成绩链表中的所有成绩。
(3)设计理由(5分)
①学生结点组织成二叉排序树,使三种操作都有较高的效率:插入n个学生结点O(nlog2n),查找一个学生结点O(log2n),输出所有学生结点O(n)。
②每个学生的所有成绩结点组织成链表,动态申请空间,适合于每个学生选修的课程数不等的实际情况,节省空间。
2.(1998年)
人们在管理实践中发现,数据库技术是信息资源的整理、保存、管理和使用的最有效的手段。数据库按其数据结构模型分类,通常可分为层次型数据库、网络型数据库、关系型数据库和面向对象型数据库,各种类似的数据模型都有自身的特点。试从关系数据模型的优点和弱点论述: