当前位置:问答库>考研试题

2018年电子科技大学基础与前沿研究院820计算机专业基础之数据结构考研强化五套模拟题

  摘要

一、填空题

1. 已知如下程序段:

语句1执行的时间复杂度为_____:语句2执行的时间复杂度为_____:语句3执行的时间复杂度为_____:语句4执行的时间复杂度为_____。

【答案】(1)n+1

(2)n

(3)n(n+3)/2

(4)n(n+l)/2

【解析】语s 句1执行到不符合条件情况下,执行了n +1次。当语句1不符合条件了是不会执行语句2的,所以语句2被执行了n 次。语句3每次都要执行到不符合条件,故为2+3+4...... +(n+l) 加起来就是n(n+3)/2。语句3不符合条件了是不会执行语句4的。所以语句4被执行了1+2+3...... +n 即n(n+l)/2。

2. 一棵有11个结点的满二叉树有_____个度为1的结点、有_____个分支(非终端) 结点和_____个叶子,该满二叉树的深度为_____。 【答案】或

【解析】满二叉树没有度为1的结点,度为0的结点等于度为2的结点个数+1。

3. 二叉树由_____,_____,_____三个基本单元组成。

【答案】根结点;左子树;右子树

4. 每一棵树都能唯一地转换为它所对应的二叉树。若已知一棵二叉树的前序序列是BEFCGDH ,中序序列是FEBGCHD ,则它的后序序列是_____。设上述二叉树是由某棵树转换而成,则该树的前序序列是_____

【答案】FEGHDCB ;BEF

【解析】树的前序序列对应二叉树的前序序列,该二叉树转换成森林时含三棵树,其第一棵

树的前序是BEF 。

5. 在单链表L 中,指针P 所指结点有后继结点的条件是_____

【答案】P ﹣>next! =NULL

【解析】指针所指节点的指针域所指向的元素非空,说明该指针所指节点有后继结点。

二、单项选择题

6. 有两个并发执行的进程P1和P2, 共享初值为1的变量x 。P1对x 加1, P2对x 减1。加1和减1操作的指令序列分别如下所示。

两个操作完成后, 2的值( )。

A. 可能为-1或3

B. 只能为1

C. 可能为0、1或2

D. 可能为-1、0、1或2

【答案】C

【解析】这是在数据库中常有的操作。为保证数据的正确, 避免产生错误, 系统必须保证数据的同步。而保证数据的同步一般采取加锁的方法, 让进程P1和P2互斥访问共享变量X 。当然用信号量和P 、V 操作也是可以保证互斥操作, 达到数据同步的。

本例中, 由于没有采取保证数据同步的相应措施, 则最后结果就会出现差错。例如, 当正常情况下, 进程P1和P2先后对x 操作, 可以看到x 值的变化为初始

则x 值的变化为初始的过程, 若P2, P1先后操作, , 这是正确的。若考虑一种并发的情况, 进程P1和P2先后执行了取数load 的操作, 它们得到的x 值均为1, 运算后, P1和P2的x 值分别为2和0, 此时要看哪个进程后执行存数store 的操作了, 哪个进程后操作, 结果就是那个进程的x 值, 所以可能的结果为0或2, 加上前面正确的x 值1, 则可能的结果就有3种了。

7. 若元素a , b , c , d , e , f 依次进栈, 允许进栈、退栈操作交替进行, 但不允许连续三次进行退栈操作, 则不可能得到的出栈序列是( )。

A.d , c , e , b , f , a

B.c , b , d , a , e , f

C.b , c , a , e , f , d

D.a , f , e , d , c , b

【答案】D

【解析】4个选项所给序列的进、出栈操作序列分别为:

选项A.

选项B.

选项C.

选项D.

按照题目要求, 不允许连续三次进行退栈操作, 所以选项D 所给序列为不可能得到的出栈顺序。

8. 每个结点的度或者为0或者为2的二叉树称为正则二叉树。n 个结点的正则二叉树中有( )个叶子。 A.

B.

C.

D. 【答案】D

【解析】二叉树结点总数n =n 0+n 1+n 2(n0,n 1,n 2分别代表度为0,度为1,度为2的结点数) 。又在非空二叉树中:n 0=n 2+l ,且本题所给树为正则二叉树,n 1=0,所以n =2*n0﹣l ,因此n 1=(n+1)/2。

9. 下列关于进程和线程的叙述中, 正确的是( )。

A. 不管系统是否支持线程, 进程都是资源分配的基本单位

B. 线程是资源分配的基本单位, 进程是调度的基本单位

C. 系统级线程和用户级线程的切换都需要内核的支持

D. 同一进程中的各个线程拥有各自不同的地址空间

【答案】A 。

【解析】利用排除法来确定正确答案:“线程是资源分配的基本单位, 进程是调度的基本单位”这句话说反了, 明显错误。“系统级线程和用户级线程的切换都需要内核的支持”也不正确, 因为用户级线程的切换由用户编写的RimtimeSystem 执行的, 内核并不感知。“同一进程中的各个线程拥有各自不同的地址空间”明显错误, 引入线程的目的就是为了同一进程的所有线程能共享进程的地址空间, 故“不管系统是否支持线程, 进程都是资源分配的基本单位”是正确的。

10.假定有4个整数用8位补码分别表示为。若将运算结果存放在一个8位寄存器中, 则下列运算会发生溢出的是( )。 A. B. C. D.

【答案】B