收藏 分享(赏)

938 数据结构与数据库技术 - 浙江理工大学.doc

上传人:天天快乐 文档编号:1141612 上传时间:2018-06-14 格式:DOC 页数:8 大小:58KB
下载 相关 举报
938 数据结构与数据库技术 - 浙江理工大学.doc_第1页
第1页 / 共8页
938 数据结构与数据库技术 - 浙江理工大学.doc_第2页
第2页 / 共8页
938 数据结构与数据库技术 - 浙江理工大学.doc_第3页
第3页 / 共8页
938 数据结构与数据库技术 - 浙江理工大学.doc_第4页
第4页 / 共8页
938 数据结构与数据库技术 - 浙江理工大学.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、第 1 页 共 7 页浙江理工大学二 OO 八年硕士学位研究生招生入学考试试题考试科目:数据结构与数据库技术 代码:938(* 请考生在答题纸上答题,在此试题纸上答题无效)第一部分、数据结构(共 90 分)一、选择填空题(每空格 3 分,本题共 60 分)1已知单链表结点的存储结构如下:struct node int data; struct node *next; ;这里,单链表的头指针为 head, 数据域为 data,指 针域为 next。试在下列 AJ 中选择一个正确答案,填入相 应的空格处,分 别实现下列四小 题的算法功能,注意各个小题之间没有联系。1)将单链表中值相同的多余结点删除

2、。void test1(struct node *head) struct node *p,*q,*r;p=head;while (p!=NULL) r=p;(1) while (q!=NULL) if (q-data=p-data) (2) else r=q;q=q-next; (3) 第 2 页 共 7 页2)将值为 y 的结点插入到值为 x 的结点之后,如果值为 x 的结点不存在,则将其插入到单链表的表尾。void test2(struct node *head,int x,int y) struct node *p,*q,*r;r=(struct node *)malloc(sizeo

3、f(struct node);r-data=y; int sgn=0;p=head;while (p!=NULL)(4) p=p-next; if (sgn=1) (5) else (6) q-next=r; 3)假设在上述单链表结点的存储结构中增加另一个指针域 prior,将该单链表改造成双向循环链表(假设该单链表中至少有一个结点)。void test3(struct node *head) struct node *p,*q;p=head;while (p!=NULL) q=p-next;if (q!=NULL) (7) else (8) head-prior=p;break; p=p-n

4、ext;第 3 页 共 7 页4)若采用单链表结构去存储一个堆栈,分别实现在堆栈中入栈和出栈一个元素的算法。void test4(struct node *head,int x) struct node *p;p=(struct node *)malloc(sizeof(struct node);p-data=x;p-next=head;(9) int test5(struct node *head) struct node *p;if (head!=NULL) p=head;(10) x=p-data;return(x); else exit(1);本题选项:(A)head=head-nex

5、t; (B)head=p; (C)q=p; (D)q-prior=p;(E)q=p-next; (F)p-next=head; (G)p=p-next; (H)r-next=p; (I)r-next=q-next; (J)r-next=NULL;2已知二叉树结点的链表存储结构如下:struct node char data;struct node *lch,*rch; ;这里,树结点的数据域为 data,左孩子指针域为 lch,右孩子指 针域为 rch,根结点所在链结点的指针由 BT 给出。 试在下列 AJ 中选择一个正确答案,填入相应的空格处,分 别实现下列两个小 题的算法功能,注意各个小

6、题之间没有联系。第 4 页 共 7 页1)利用中序遍历算法,查找二叉树 BT 中值为 x 的这个结点的双亲、左孩子及右孩子。void test6(struct node *BT,char x) struct node *p,*q,*s100;struct node *x1,*x2,*x3;int top=0;x1=x2=x3=NULL;p=BT;while (top!=0)|(p!=NULL) if (p!=NULL) while(p!=NULL) top+;stop=p;p= (11) else p=stop;(12) if (p-data=x) (13) =p-lch; (14) =p-r

7、ch; q=p;p=p-rch; if (p!=NULL) if(x1!=NULL) printf(“结点 x 的双亲是:%cn“,x1-data);else printf(“结点 x 是树根n“);if(x2!=NULL) printf(“结点 x 的左孩子是:%cn“,x2-data);else printf(“结点 x 无左孩子n“);if(x3!=NULL) printf(“结点 x 的右孩子是%cn“,x3-data);else printf(“结点 x 无右孩子n“);2)假设上述二叉树 BT 为一个二叉排序树, 实现在该二叉排序树中插入一个结点 s 的第 5 页 共 7 页算法。

8、void test7(struct node *BT,struct node *s)struct node *p,*q;if (BT=NULL) BT=s;else (16) while (p!=NULL) q=p;if (s-datadata) (17) else (18) if(s-datadata) (19) else (20) 本题选项:(A)x1 (B)x2 (C)x3 (D)p=p-lch; (E)p=p-rch; (F)p-lch; (G)p=BT; (H)q-lch=s; (I)q-rch=s; (J)top-;三、算法程序设计题(每小题 15 分,本题共 30 分)1设哈希函

9、数为 HT,解决冲突的方法为外链地址法,哈希函数采用除留余数法(k%p,k 为待删除的关键字,p 为小于基本哈希表容量 m 的质数)。若哈希表中某个位置上的 key 域值为零,则表示该位置未被占用。 试编写程序, 实现从用哈希表中删除关键字 k 的算法(注意需要判断关键字是否存在)。define m 100;struct node int key;struct node *next;HTm;void test1(struct node HT,int k,int p)2试编写程序,实现用单链表表示的数据简单选择排序,并分析算法的 时间复杂度。第 6 页 共 7 页这里结点的数据域为 data,指

10、 针域为 next,单链表的头结点为 head。struct node int data;struct node *next; ;void test2(struct node *head)第二部分、数据库技术(共 60 分)解答题(本题共 8 小题,可以选择 6 小题解答,每小题 10 分,按得分最高的 6 小题计分。本题共 60 分)数据库 STU 用来存放某 专业 学生的考试成绩,它有三张表,表 students 用来存放学生的基本信息;表 subjects 用来存放课程的基本信息及该课程的平均考试成绩,其中平均成绩是未知的,需要根据其它表汇总 得到;表 scores 用来存放每个学生各门

11、课程的考试成绩。这三张表的结构分别如下:表 students 的结构:列名 类型 长度 规则 列名的中文含义stu_id 字符型 8 主键、索引 学号name 字符型 10 非空 姓名sex 字符型 2 非空,男或女,默认值为“男” 性别class 字符型 2 自动计算,(取学号的 5-6 位为班级代码) 班级号表 students 记录举例:stu_id name sex class01540101 陈文忠 男 0101540102 金志明 男 0101540201 韩国英 女 0201540201 汤江民 男 02表 subjects 的结构:列名 类型 长度 规则 列名的中文含义sub_

12、id 字符型 4 主键、索引 课程编号subject 字符型 50 非空 课程名称type 字符型 1 非空,必修课为 R,选修课为S 课程性质term 数值型 1 非空,取值范围 18 开课学期avgscore 数值型 8,4 该课程考试成绩的平均值第 7 页 共 7 页表 subjects 记录举例:sub_id subject type term avgscore1101 高等数学 R 11102 英语 R 16502 数据库技术 R 56512 物流管理 S 5表 scores 的结构:列名 类型 长度 规则 列名的中文含义stu_id 字符型 10 非空 学生学号sub_id 字符型

13、 40 非空 课程编号Score 数值型 3 0100 考试成绩表 scores 记录举例:stu_id sub_id score01540101 1101 8901540101 1102 7501540101 6502 8501540101 6512 9201540102 1101 6901540102 1102 7901540102 6512 82试编写 SQL 命令,完成以下各项功能:(注:必要时 一个小题可以用多条语句去实现,每小题后面的提示语句仅供参考,考生可以按自己思路解答)1 根据 subjects 表,编写建立(创建)该表的 SQL 语句。 (注意各列的约束条件或规则)CREA

14、TE 2 根据 subjects 表,列出第 2 学期开课的所有必修课程的名称。SELECT 3 根据各表数据,列出姓名为”X”的这个学生全部必修课程的考试成绩,内容包括:课程编号、课程名称、开课学期、考试成绩等,要求标题使用上述中文含义显示。 (提示:使用多表连接)SELECT FROM scores AS a 第 8 页 共 7 页4 根据 scores 表中各课程的考试成绩,计算汇总得到 subjects 表中每门课程的平均考试成绩。 (提示:使用 update、子查询和聚合函数 AVG)UPDATE subjects SET 5 根据各表数据,列出课程名称为X这门课程考试成绩最高的这些

15、学生的姓名。 (提示:可使用子查询和聚合函数 MAX)SELECT name FROM students 6 根据 scores 和 students 表,统计列出所有课程考试成绩都及格的这些学生的姓名。 (提示:可使用子查询)SELECT name FROM students 7 根据 scores 和 students 表,统计列出哪个(些)学生全部课程的平均分最高。 (提示:可使用 GROUP BY 先建立一张临时表或一个视图,分多步完成)CREATE VIEW myview AS SELECT name FROM 8 检查 scores 表中是否存在非法的学号,即 scores 中的学号在 students 表中找不到。若存在,则将这些包含非法学号的记录从 scores 表中删除。 (提示:使用子查询和 IN)IF ( )DELETE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报