2018年国防科学技术大学信息系统与管理学院852数据结构考研仿真模拟五套题
● 摘要
一、单项选择题
1. 若一棵二叉树的前序遍历序列和后序遍历序列分别为1, 2, 3, 4和4, 3, 2, 1, 则该二叉树的中序遍历序列不会是( )。
A.1, 2, 3, 4
B.2, 3, 4, 1
C.3, 2, 4, 1
D.4, 3, 2, 1
【答案】C
【解析】题目中的二叉树的先序序列和后序序列正好相反, 这样的二叉树每层只有一个结点。该二叉树的形态如下图所示。
从左至右, 这8棵二叉树的中序序列分别为:
(1)4, 3, 2, 1,
(2)3, 4, 2, 1
(3)2, 4, 3, 1
(4)2, 3, 4, 1
(5)1, 4, 3, 2
(6)1, 3, 4, 2
(7)1, 2, 4, 3
(8)1, 2, 3, 4
显然选项C 的中序序列不会出现。
2. 从堆中删除一个元素的时间复杂度为( )。
A.O(1) B.
C.O(n) D.
【答案】B
【解析】堆中删除一个元素,需要重新调整堆,其时间复杂度为
第 2 页,共 58 页 。
3. 循环队列A[0..m﹣1]存放其元素值,用front 和rear 分别表示队头和队尾,则当前队列中的元素数是( )。
A.(rear﹣front +m)%m
B.rear ﹣front +1
C.rear ﹣front ﹣1
D.rear ﹣front
【答案】A
【解析】对于循环队列,需要深刻理解队头(font)和队尾(rear)的概念,在队头进行出队操作,在队尾进行进队操作。rear-front 可能为正也可能为负,为正时元素个数=(rear-front);如果为负则元素的个数=(rear-front+m),所以统一的公式就是(rear-front+m)%m。
4. 执行完下列语句段后,f 值为( )。
A.2
B.4
C.8
D. 无限递归
【答案】B
【解析】该程序使用了递归调用,由题知,:f(0)=2;f(l)=l*f(0)=2;f(2)=2*f(l)=4;所以结果为4。
5. 某时刻进程的资源使用情况如下表所示
此时的安全序列是( )。
A.P1, P2, P3, P4
B.P1, P3, P2, P4
C.P1, P4, P3, P2
D. 不存在
【答案】D
【解析】典型的死锁避免算法, 银行家算法的应用。银行家算法是操作系统中的一个重点知识
第 3 页,共 58 页
单元, 考生对此应该非常熟悉, 本题并无难点。分析一下下表, 可以看到, 经过P1, P4的运行以后, 可用资源是2, 2, 1, 而P2, P3所需资源分别是1, 3, 2和1, 3, 1。所以剩余资源已经不够P2或P3的
分配, 亦即找不到能够安全运行的序列, 因此此时是处于不安全状态, 所以不存在这样的安全序列。
6. 循环两列放在一维数组 中, end1指向队头元素, end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作, 队列中最多能容纳M-1个元素。初始时为空, 下列判断队空和队满的条件中, 正确的是( )
A. 队空:endl==end2; 队满:endl==(end2+l)modM
B. 队空Gendl==end2; 队满:Gend2==(endl+1)mod(M-1)
C. 队空Gend2==(endl+1)modM; 队满:Gendl==(end2+l)modM
D. 队空:
【答案】A
【解析】在循环队列中, 在少用一个元素空间的前提下, 可约定入队前, 测试尾指针在循环意义下加1后是否等于头指针, 若相等, 则队满。而队空的条件还是首尾指针是否相等。
7. 下列有关浮点数加减运算的叙述中, 正确的是( )。
Ⅰ. 对阶操作不会引起阶码上溢或下溢
Ⅱ. 右规和尾数舍入都可能引起阶码上溢
Ⅲ. 左规时可能引起阶码下溢
Ⅳ. 尾数溢出时结果不一定溢出
A. 仅Ⅱ Ⅲ
B. 仅Ⅰ Ⅱ Ⅳ
C. 仅Ⅰ Ⅲ Ⅳ
D. Ⅰ Ⅱ ⅢⅣ
【答案】D
【解析】浮点数的加减运算步骤包括:①对阶, 使两个操作数的小数点位置对齐, 阶码小的尾数右移, 可能产生溢出, 但是阶码不会溢出; ②尾数求和, 将对阶后的尾数按定点数加(减) 运算规则运算; ③规格化, 包括左规和右规, 左规时阶码减少, 可能出现阶码下溢, 而右规时, 阶码增加可能出现阶码上溢; ④舍入, 该过程可能需要右规调整, 因此可能出现阶码上溢; ⑤溢出判断, 浮点数的溢出与否是由阶码的符号决定的, 而不是由尾数溢出判断的, 因此尾数溢出时结果不一定溢出。因此Ⅰ
第 4 页,共 58 页 队满: