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

2018年国防科学技术大学信息系统与管理学院852数据结构考研强化五套模拟题

  摘要

一、单项选择题

1. 设无向图的顶点个数为m 则该图最多有( )条边。

A.n-1 B. C.

D.0E.n2

【答案】B

【解析】在数据结构中仅讨论简单图,在计算无向图的最多边时,不考虑顶点与顶点的边。因此边数最多时,构成的是无向完全图。此时的边数为

2. 4个圆盘的Hanoi 塔,总的移动次数为( )。

A.7 B.

C.15

D.16

【答案】C 。

【解析】Hanoi 问题总移动次数为:2M 次。

3. 主机甲和主机乙间已建立一个TCP 连接,主机甲向主机乙发送了两个连续的TCP 段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200, 主机乙正确接收到两个段后,发送给主机甲的确认序列号是( )。

A.500

B.700

C.800

D.1000

【答案】D

【解析】TCP 使用滑动窗口流控协议,窗口大小的单位是字节,本题中分别包含300字节和500字节的有效载荷,第一个段的序列号为200, 那么确认序列号为200+300+500=1000。

4. 下列选项中, 不可能在用户态发生的事件是( )。

A. 系统调用

B. 外部中断

C. 进程切换

D. 缺页

【答案】C 。

【解析】我们在学习操作系统中知道, 任何一个进程在现代操作系统中为了共享和保护, 设定了用户态和内核态(可以通过设置软、硬件标志位来实现) , 在用户态运行用户的程序, 在内核运行系统的程序。所以, 从选项来看, 系统调用可以在任何态发生, 用户可以发起系统调用, 系统也可以; 外部中断是不可控的, 也会在任何时刻发生, 缺页的发生也是不可控的, 可以发生在用户代码之间; 而进程切换却不会在用户态发生。我们可以考虑一下情形, 进程切换是在什么时候发生的, 进程切换前必定运行的是进程调度, 只有进程调度选择了下一次被调度的进程, 进程切换才可以进行。进程调度是scheduler , 进程切换是dispather , 这体现了现代操作系统策略与机制分离的设计思想。所以, 进程切换必定不会在用户态发生(所谓发生指其起始的源头时刻) , 必定是在内核态(进程调度) 发生的。

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

A. 根节点的度一定为2

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

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

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

【答案】D

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

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

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

6. 下列排序算法中,占用辅助空间最多的是( )。

A. 归并排序

B. 快速排序

C. 希尔排序

D. 堆排序

【答案】A

【解析】归并排序的辅助空间为O(n),快速排序所占用的辅助空间为

用的辅助空间为O(1)。

7. 单链表中,增加一个头结点的目的是为了( )。

A. 使单链表至少有一个结点

,堆排序所占

B. 标识表结点中首结点的位置

C. 方便运算的实现

D. 说明单链表是线性表的链式存储

【答案】C

【解析】单链表中增加一个头结点的目的是为了方便运算的实现,使得对第一个元素的操作与其它元素的操作相同。

8. 下列选项中, 不可能是快速排序第2趟排序结果的是( )

A.2, 3, 5, 4, 6, 7, 9

B.2, 7, 5, 6, 4, 3, 9

C.3, 2, 5, 4, 7, 6, 9

D.4, 23, 5, 7, 6, 9

【答案】C

【解析】对于快速排序, 每一趟都会使一个元素位于有序时的位置, 而有序序列为2, 3, 4, 5, 6, 7, 9, 与C 进行对比, 只有9位于它有序的时候的位置, 显然不是第二趟快速排序的结果

9. 主机甲向主机乙发送一个(SYN一1, seq 一11220) 的TCP 段, 期望与主机乙建立TCP 连接, 若主机乙接受该连接请求, 则主机乙向主机甲发送的正确的TCP 段可能是( )。 A. B. C. D.

【答案】C

TCP 是面向连接的, 所谓面向连接, 就是当计算机双方通信时必需先建立连接, 然后数【解析】

据传送, 最后拆除三个过程, 也就是客户主动打开TCP 传输, 服务器被动打开。

第一次握手:客户发送

第二次握手:服务器发送

ack=x+1, 自己选择的序号seq=y。

第三次握手:

客户发送

器给出确认, 其ACK=1, 确认号ack=y+1。

客户的TCP 通知上层应用进程, 连接已经建立。服务器的TCP 收到主机客户的确认后, 也通知其上层应用进程:TCP 连接已经建立。

因此, 本题中x=11220, y 是主机乙自动选取的序号, 可以与x 相同, 也可以不相同, 从而主机乙所发出的TCP 段应该是SYN=1, ACK=1, seq=y, ack=x+1, 即SYN=1, ACK=1, seq=y, ack=11221, 从而答案是C 。

给服务器, 即客户的TCP 向服务器发出连接请求报文段, 给客户, 即服务器的TCP 收到连其首部中的同步位SYN=1, 并选择序号seq=x, 表明传送数据时的第一个数据字节的序号是X 。 接请求报文段后, 如同意则发回确认。服务器在确认报文段中应使SYN=1, 使ACK=1, 其确认号给服务器, 即客户收到此报文段后向服务