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

2018年福建师范大学数学与计算机科学学院841计算机专业基础综合之数据结构考研仿真模拟五套题

  摘要

一、单项选择题

1. 最大容量为n 的循环队列,队尾指针是rear ,队头:front ,则队空的条件是( )。

A.(rear+1)MODn=front

B.rear =front

C.rear+1=front

D.(rear-1)MODn=front

【答案】B

【解析】循环队列队空的条件是:rear =front 。循环队列队满的条件,

通常采用(rear+1)%MAXQSIZE=front 来判定队满,其中MAXQSIZE 表示队列的长度。

2. 假设某计算机按字编址, Cache 有4个行, Cache 和主存之间交换的块大小为1个字。若Cache 的内容初始为空, 采用2路组相联映射方式和LRU 替换算法, 当访问的主存地址依次为0, 4, 8, 2, 0, 6, 8, 6, 4, 8时, 命中Cache 的次数是( )。

A.1

B.2

C.3

D.4

【答案】C 。

【解析】Cache 有4个行, 2路组相联, 即Cache 被分成2组, 每组2行。主存地址为0〜1、4〜5、8〜9可映射到第0组Cache 中, 主存地址为2〜3、6〜7可映射到第1组Cache 中。Cache 初始为空, 采用LRU 替换算法, 当访问主存的10个地址依次为0, 4, 8, 2, 0, 6, 8, 6, 4, 8时, 命中Cache 的次数共有3次, 分别发生在第7、8和10步时。

3. 已知小根堆为8, 15, 10, 21, 34, 16, 12, 删除关键字8之后需重建堆, 在此过程中, 关键字之间的比较数是( )。

A.1

B.2

C.3

D.4

【答案】C

【解析】堆排序中, 依次输出堆顶的最小值, 然后重新调整堆, 如此反复执行, 便得到一个有序序列。本题中, 删除堆顶元素8后将最后一个元素12置于堆顶, 然后调整堆:首先与15比较, 12小于15, 所以不用交换; 然后与10比较, 因为10小于12, 所以交换10和12的位置; 调整后12再与

16比较, 12小于16, 调整堆过程结束。因此12共与15、10、16进行了三次比较。

4. 某网络的IP 地址空间为采用定长子网划分,子网掩码为

网络的最大子网个数、每个子网内的最大可分配地址个数分别是( ).

A.32, 8

B.32, 6

C.8, 32

D.8, 30

【答案】B 则该

【解析】子网号为5位,在CIDR 中可以表示2=32个子网,主机号为3位,除去全0和全5

1的情况可以表示6个主机地址,答案为B.

5. 先序序列为a , b , c , d 的不同二叉树的个数是( )。

A.13

B.14

C.15

D.16

【答案】B

【解析】二叉树的先序遍历定义为:若二叉树为空, 则空操作; 否则, 访问根节点, 然后先序遍历左子树, 最后先序遍历右子树。本题中, 结点a 为二叉树的根节点, 左右子树的先序遍历可能存在下面四种情况:

①左子树为空, bcd 为右子树; ②b 为左子树, cd 为右子树; ③bc 为左子树, d 为右子树; ④bcd 为左子树, 右子树为空。

然后将左右子树继续分解, 如第①种情况的右子树先序遍历(bcd)可能有:

A. 左子树为空, 右子树为cd ;

b. 左子树为c , 右子树为d ;

c. 左子树为cd , 右子树为空。

按照这种方法继续分解左右子树, 直到不能再分解为止, 可得第①和④种情况各包含5种不同情况, 第②和③种情况各包含2种情况, 因此总共有14种不同的二叉树。

6. 设X 是树T 中的一个非根结点,B 是T 所对应的二叉树。在B 中,X 是其双亲的右孩子,下列结论正确的是( )。

A. 在树T 中,X 是其双亲的第一个孩子

B. 在树T 中,X 一定无右兄弟

C. 在树T 中,X 一定是叶结点

D. 在树T 中,X 一定有左兄弟

【答案】D

【解析】由树和二叉树的转换关系可知,X 一定有左兄弟,X 是其双亲的第二个孩子,不能

确定在树T 中,X 是否有右兄弟,是否是叶结点。

7. 现在有一颗无重复关键字的平衡二叉树(AVL 树) , 对其进行中序遍历可得到一个降序序列。下列关于该平衡二叉树的叙述中, 正确的是( )。

A. 根节点的度一定为2

B. 树中最小元素一定是叶节点

C. 最后插入的元素一定是叶节点

D. 树中最大元素一定是无左子树

【答案】D

【解析】二叉树的中序遍历定义是“若二叉树为空, 则空操作; 否则:

①中序遍历左子树; ②访问根节点; ③中序遍历右子树”。

A 项错误, 当树中仅有一个或者两个结点时, 根节点的度就可能不为2; B 项错误, 树中最小元素是中序遍历时最后访问的节点, 当没有右子树时, 最后访问的节点是根节点; C 项错误, 当最后插入的元素破坏树的平衡后, 树会进行调整, 使其成为中间节点; D 项正确, 由中序遍历的特点可知, 左子树的值大于根节点, 所以最大元素一定没有左子树。

8. 设二维数组(即m 行n 列) 按行存储在数组

A[i,j]在一维数组B 中的下标为( )。

A.(i﹣1)*n+j

B.(i﹣1)*n+j ﹣l

C.i*(j﹣1)

D.j*m+i ﹣l

【答案】A

【解析】前i ﹣1的元素个数为(i﹣1)*n,所以二维数组元素A[i,j]在一维数组B 中的下标为(i﹣1)*n+j 。需要注意数组B 的下标是从0开始,还是从1开始。

9. 对一组数据(2, 12, 16, 88, 5, 10) 进行排序, 若前三趟排序结果如下:

第一趟:2, 12, 16, 5, 10, 88

第二趟:2, 12, 5, 10, 16, 88

第三趟:2, 5, 10, 12, 16, 88

则采用的排序方法可能是( )。

A. 起泡排序

B. 希尔排序

C. 归并排序

D. 基数排序

【答案】A

中,则二维数组元素