2018年东北大学秦皇岛分校842计算机专业基础之数据结构考研仿真模拟五套题
● 摘要
一、综合题
1. 下列广义表,可以唯一对应一棵二叉树的有( )。并归纳出唯一对应的条件。
(1)(A(B(D,E) ,C(F)))
(2)(A(B(D,E) ,C))
(3)(A)
(4)(A(B(C,D(E))))
(5)( )
【答案】唯一对应一棵二叉树的有(2)、(3)和(5)。唯一对应的条件:空表、只有一个元素的表、每个子表个数是零或是2的表。
2. 对于后序线索二叉树,怎样查找任意结点的直接后继? 对于中序线索二叉树,怎样查找任意结点的直接前驱?
【答案】(1)后序线索树中结点的后继的方法如下:根结点无后继;当结点的rtag=1时,其右线索指向后继;当结点的rtag=0且是其双亲的右孩子,或是双亲的左孩子且双亲无右孩子时,其双亲是该结点的后继;当结点是其双亲的左孩子且双亲有右孩子时,其双亲结点右子树中最左下的叶结点是其后继。
(2)对中序线索二叉树的某结点,若其左标记等于1,则左孩子为线索,指向直接前驱;否则,其前驱是其左子树上按中序遍历的最后一个结点。
3. 只要找出一个具有n 个元素的集合的第
最适合? 给出实现的思想。
【答案】在具有n 个元素的集合中找第个最小元素,应使用快速排序方法。其基本思想如下:设n 元素的集合用一维数组表示,其第一个元素的下标为1,最后一个元素下标为n 。以第一个元素为“枢轴”,经过快速排序的一次划分,找到“枢轴”的位置i ,若i=k,则该位置的元素即为所求;若说,则在1至i -1间继续进行快速排序的划分;若i 小元素。 个最个最小元素,你所学过的排序方法中哪种 4. 某计算机的主存地址空间大小为256MB ,按字节编址,指令Cache 和数据Cache 分离,均有8个Cache 行,每个Cache 行大小为64B ,数据Cache 采用直接映射方式. 现有两个功能相同的程序A 和B ,其伪代码如下所示:程序A :程序B : 假定int 类型数据用32位补码表示,程序编译时i ,j ,sum 均分配在寄存器中,数组a 按行优先方式存放,首地址320(十进制数). 请回答下列问题,要求说明理由或给出计算过程. (1)若不考虑用于Cache 一致性维护和替换算法的控制位,则数据Cache 的总容量为多少? (2)数组数据a[0][31]和a[l][1]各自所在的主存块对应的Cache 行号分别是多少(Cache行号从0开始)? (3)程序A 和B 的数据访问命中率各是多少? 哪个程序的执行时间更短? 【答案】(1)每个Cache 行对应一个标记项,标记项包括有效位、脏位、替换控制位以及标记位. 由主存空间大小为256M 可知地址总长度为28位,其中块内地址为log264=6位,Cache 块号为log 28=3位,不考虑一致性维护和替换算法的控制位,则Tag 的位数为28﹣6﹣3=19位,还需一位有效位,数据Cache 共有8行,故Cache 的总容量为8*(64+20/8)B=532B (2)数组a 在主存的存放位置及其与Cache 之间的映射关系如下图所示: 数组按行优先方式存放,首地址为320,数组元素占4个字节. a[0][31]所在的主存块对应的Cache 行号为(320+31*4)/64=6; a[1][1]所在的主存块对应的Cache 行号为 (3)数组a 的大小为256*256*4B=218B ,占用218/64=212个主存块,按行优先存放,程序A 1612逐行访问数组a ,共需访问的次数为2次,每个字块的第一个数未面中,因此未面中次数为2 次,程序A 的数据访问命中率为Cache 总容量为64B*8=512B ,数组a 一行的大小为1KB 正好是Cache 容量的2倍,可知不同行的同一列数组元素使用的是同一个Cache 单元,而程序B 逐列访问数组a 的数据时,都会将之前的字块置换出,也即每次访问都不会面中,故程序B 的数据访问命中率是0,因此程序A 的执行过程更短. 5. 设二叉树BT 的存储结构如表: 表 二叉树BT 的存储结构 其中BT 为树根结点的指针,其值为6, Lchild 、Rchild 分别为结点的左、右孩子指针域data 为结点的数据域。试完成下列各题: (1)画出二叉树BT 逻辑结构; (2)写出按前序、中序、后序遍历该二叉树所得到的结点序列; (3)画出二叉树的后序线索树。 【答案】(1)二叉树的逻辑结构如图1所示: 图1 (2)前序序列:ABCEDFHGIJ 中序序列:ECBHFDJIGA 后序序列:ECHFJIGDBA (3)二叉树的后序线索树如图2所示:
相关内容
相关标签