2014-2015学年二学期数据结构期末考试试卷(A卷)
更新时间:2023-09-20 03:36:02 阅读量: 小学教育 文档下载
石家庄学院
2014-2015学年二学期数据结构期末考试试卷(A卷)
班级:___________学号:___________姓名:___________得分:___________
题号 得分 阅卷 一 二 三 四 五 六 七 八 九 十 成绩 复核 题目部分,(卷面共有23题,100分,各大题标有题量和总分) 一、应用题(4小题,共29分)
1.若一棵二叉树,左右子树均有三个结点,其左子树的前序序列与中序序列相同,右子树的中序序列与后序序列相同,试构造该树。
2.设有一棵算术表达式树,用什么方法可以对该树所表示的表达式求值? 3.请回答下列关于堆的一些问题
①堆的存储表示是顺序的,还是链接的?
②设有一个最小堆,即堆中任意结点的关键码均大于它的左子女和右子女的关键码。其具有最大值的元素可能在什么地方?
③对一个元素进行初始建堆的过程中,最多做多少次数据比较(不用大O表示法)?
4.若有100个学生,每个学生有学号,姓名,平均成绩,采用什么样的数据结构最方便,写出这些结构?
二、判断正误(4小题,共4分)
1.有n个数顺序(依次)进栈,出栈序列有种。
2.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。( )
3.线性表的逻辑顺序与物理顺序总是一致的( )。 4. 数据元素是数据的最小单位( )。 三、单项选择题(6小题,共12分) 1.循环链表H的尾结点P的特点是
A、P^.NEXT:=H B、P^.NEXT:= H^.NEXT C、P:=H D、P:=H^.NEXT
2.一般情况下,将递归算法转换成等价的非递增归算法应该设置 A、堆栈 B、队列 C、堆栈或队列 D、数组 3.在一棵高度为k的满二叉树中,结点总数为
A、2k-1 B、2k C、2k-1 D、?log2k?+1
4.对有18个元素的有序表作二分(折半)查找,则查找A[3]的比较序列的下标为 A、1、2、3 B、 9、5、2、3 C、 9、5、3 D、 9、4、2、3 5.下面说法错误的是
(1)算法原地工作的含义是指不需要任何额外的辅助空间
(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A、 (1) B、 (1),(2) C、 (1),(4) D、 (3)
6.设有广义表D(a,b,D),其长度为( ),深度为
A、∞ B、3 C、2 D、5 四、算法设计题(3小题,共35分)
1.编写算法判别给定二叉树是否为完全二叉树。 2.设后序线索树中结点构造为(Ltag,Lchild,Data,Rchild,Rtag)。其中:Ltag,Rtag 值为0时,Lchild、Rchild 分别为儿子指针;否则分别为直接前驱,直接后继的线索。请写出在后序线索树上找给定结点p^ 的直接前驱q 的算法。(13分) 3.关于堆排序方法,完成如下工作: (1) 简述该方法的基本思想。 (2) 写出堆排序算法。
(3) 分析该算法的时间复杂度。 五、填空题(5小题,共12分)
1.含4个度为2的结点和5个叶子结点的二叉树,可有______个度为1的结点。 2.设为哈夫曼树的叶子结点数目.则哈夫曼树共有_______个结点。 3.树在计算机内的表示方式有 , , 。 4.通常元素进栈的操作是_________。
5. 一棵高度为5的满二叉树中的结点数为 个,一棵高度为3满四叉树中的结点数为 个。
六、简答题(1小题,共8分)
1.试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。
石家庄学院
2014-2015学年二学期数据结构期末考试试卷(A卷)
答案部分,(卷面共有23题,100.0分,各大题标有题量和总分) 一、应用题(4小题,共8分)
1.据题意,左子树的前序序列与中序序列相同,有
即以左子树为根的树无左孩子。此外,右子树的中序序列与后序序列相同,即有
即以右子树为根的树无右孩子。由此构造该树如下图所示:
2.方法有二。一是对该算术表达式(二叉树)进行后序遍历,得到表达式的后序遍历序列,再按后缀表达式求值;二是递归求出左子树表达式的值,再递归求出右子树表达式的值,最后按根结点运算符(+、-、*、/ 等)进行最后求值。 3.①堆的存储表示是顺序的。
②其具有最大值的元素可能在叶子结点上,即③最多作4n次数据比较。
4.将学号、姓名、平均成绩看成一个记录(元素,含三个数据项),将100个这样的记录存于数组中。因一般无增删操作,故宜采用顺序存储。 typedef struct {int num;//学号
char name[8];//姓名 float score;/平均成绩 }node;
node student[100]; 二、判断正误(4小题,共8分) 1.√ 2.× 3.× 4.×
三、单项选择题(6小题,共8分) 1. A 2.A 3. C 4.D 5.C 6. B A
四、算法设计题(3小题,共8分)
1.int IsFull_Bitree(Bitree T)//判断二叉树是否完全二叉树,是则返回1,否则返回0
{
InitQueue(Q); flag=0;
EnQueue(Q,T); //建立工作队列 while(!QueueEmpty(Q)) {
DeQueue(Q,p); if(!p) flag=1;
else if(flag) return 0; else {
EnQueue(Q,p->lchild);
EnQueue(Q,p->rchild); //不管孩子是否为空,都入队列 }
}//while return 1;
}//IsFull_Bitree
分析:该问题可以通过层序遍历的方法来解决.与6.47相比,作了一个修改,不管当前结点是否有左右孩子,都入队列.这样当树为完全二叉树时,遍历时得到是一个连续的不包含空指针的序列.反之,则序列中会含有空指针。 2.[题目分析]后序遍历是“左-右-根”,因此,若结点有右子女,则右子女是其后序前驱,否则,左子女(或左线索)指向其后序前驱。
BiThrTree PostSucc (BiThrTree T,p)//在后序线索二叉树T中,查找指定结点p的直接前驱q {if(p->Rtag==0) q=p->Rchild;//若p有右子女,则右子女为其前驱
else q=p->Lchild; //若p无右子女,左子女或左线索就是p的后序前驱 return (q);
}//结束PostSucc
3.(1) 堆排序是对树型选择排序的改进,克服了树型选择排序的缺点,其定义在前面已多次谈到,请参见上面“四、应用题”的43题和45题(4)。“筛选”是堆排序的基础算法。由于堆可以看作具有n个结点的完全二叉树,建堆过程是从待排序序列第一个非终端结点?n/2?开始,直到根结点,进行“筛选”的过程。堆建成后,即可选得一个关键字最大或最小的记录。然后堆顶元素与序列中最后一个元素交换,再将序列中前n-1记录重新调整为堆,可选得一个关键字次大或次小的记录。依次类推,则可得到元素的有序序列。 (2) void Sift(RecType R[],int i,int m) { //假设R[i+1..m]中各元素满足堆的定义,本算法调整R[i]使序列R[i..m]中各元素满足堆的性质
R[0]=R[i];
for(j=2*i; j<=m; j*=2)
{ if(j R[i]=R[0]; }//Sift void HeapSort(RecType R[],int n) { //对记录序列R[1..n]进行堆排序。 for(i=n/2;i>0;i--) Sift(R,i,n); for(i=n;i>1;i--){ R[1]<-->R[i]; Sift(R,1,i-1);}//for }//HeapSort (3)堆排序的时间主要由建堆和筛选两部分时间开销构成。对深度为h的堆,“筛选”所需进行的关键字比较的次数至多为2(h-1);对n个关键字,建成深度为h(=?log2n?+1)的堆,所需进行的关键字比较的次数至多C (n),它满足下式: 调整“堆顶”n-1次,总共进行的关键字比较的次数不超过:2(?log2(n-1)?+ ?log2(n-2)?+ ?+log22)<2n(?log2n?)因此,堆排序的时间复杂度为O(nlog2n)。 五、填空题(5小题,共8分) 1.0至多个。 2.-1 3.双亲链表表示法 孩子链表表示法 孩子兄弟表示法 4.先移动栈顶指针,后存入元素。 5.63 85 六、简答题(1小题,共8分) 1.例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生的姓名为一行记成的表。这个表就是一个数据结构。每个记录(有姓名,学号,成绩等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。这几个关系就确定了这个表的逻辑结构。那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢?是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题,我们从高级语言的层次讨论这个问题。最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。 试卷指标统计数据 总题量 23 总分值 100 1 2 8 1 3 4 4 2 3 2 线性表及其顺序存储 顺序表 栈和队列 查找 章节编码 题量 分值 章节说明 01 02 05 07 08 10 13 45 树和二叉树、森林 24 排序 18 绪论 6 数据结构试题 难度编码 1 2 3 题量 8 9 6 4 4 6 3 5 1 分值 39 36 25 29 4 12 35 12 8 难度说明 易 中 难 应用题 判断正误 单项选择题 算法设计题 填空题 简答题 题型编码 01 02 03 04 06 07 题量 分值 题型说明
正在阅读:
2014-2015学年二学期数据结构期末考试试卷(A卷)09-20
消防车荷载分析11-30
2018年辽宁大学人口研究所816西方经济学之西方经济学(微观部分)04-24
我的生日作文400字03-31
生产安全事故应急救援预案1资料12-15
难忘的生日作文400字07-12
【3份】2017年中考语文阅读专题复习06-07
试点学校培训小结(二)03-26
易经的思维方式03-08
走心的句子简短_最走心的句子08-01
- 通信原理实验报告
- 2016年上半年安徽省临床医学检验技术中级技师职称试题
- 传智播客刘意老师JAVA全面学习笔记
- 星级酒店客房部保洁服务标准与工作流程操作规范 - PA新员
- 算法竞赛入门经典授课教案第1章 算法概述
- 《微信公众平台架起家校互通桥》结题报告
- 2018年宁夏银川市高考数学三模试卷(理)Word版含解析
- 大学生创业基础 - 尔雅
- 2016年6月英语六级真题写作范文3套
- 中国磁性材料纸行业专项调查与发展策略分析报告(2015-2020)
- 云南省2018届高三普通高中学业水平考试化学仿真试卷二Word版缺答案
- 窗函数法设计低通滤波器
- 第三章 绩效考评方法与绩效管理模式
- 高等数学教案
- 个人独资合伙企业习题及答案
- 小学语文沪教版三年级上册第六单元第30课《想别人没想到的》公开课优质课教案比赛讲课获奖教案
- 曳引钢丝绳及其他曳引系统校核计算 - 图文
- 淮阴工学院管理学期末试卷7 - 图文
- 受力分析方法(1)
- 2013-2014学年陕西省西安市西工大附小五年级(上)期末数学试卷及解析
- 数据结构
- 学年
- 期末
- 试卷
- 学期
- 考试
- 2014
- 2015
- 西方政治制度复习资料
- 《浙江大学关于因公临时出国(境)审批与管理工作的规定(2015年2月修订)》的通知
- 如法网习题及答案完整版
- 湖南省2018年普通高等学校对口招生考试计算机应用类专业综合知识试题 - 图文
- 证券投资咨询公司私募基金投资管理制度
- 英语二作文范文和模板(1)
- 管理信息系统课程作业 - C及答案
- 昆明市建设工程施工安全质量标准化工地申报表(1)
- 2012逻辑推理能力考前模拟冲刺试题2
- 齿块裂纹处理施工方案新
- 串词写法
- 09级局解期末考试重点
- 简爱艺术成就论文
- 从汉语修辞学看现代广告语
- 第二单元折线统计图 - 蒜叶的生长
- 原油期货话术
- 南京六大类11个方向的战略新兴产业
- 屋面工程施工方案
- 精选司法行政工作会议讲话稿一篇
- 观课报告--认识年月日