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

2018年西安工业大学光电学院807数据结构与程序设计之数据结构考研仿真模拟五套题

  摘要

一、单项选择题

1. 一个C 语言程序在一台32位机器上运行. 程序中定义了3个变量x 、Y 和z ,其中x 和z 为int

Y 为short 型. 当x =127,Y =-9时,x 、Y 和z 的值分别是. 型,执行赋值语句z =x +Y 后,( )

A.x =0000007FH , Y =FFF9H , z =00000076H

B.x =0000007FH , Y =FFF9H , z =FFFF0076H

C.x =0000007FH , Y =FFF7H , z =FFFF0076H

D.x =0000007FH , Y =FFF7H , z =00000076H

【答案】D

【解析】当两个不同长度的数据,要想通过算术运算得到正确的结果,必须将短字长数据转换成长字长数据,这被称为“符号扩展”.例如,x 和z 为int 型,数据长32位,Y 为short 型,数据长16位,因此首先应将y 转换成32位的数据,然后再进行加法运算.

运算采用补码的形式,而x 的补码是0000007FH ,Y 的补码是FFFFFFF7H ,所以x +Y =00000076H.

2. 静态链表中指针表示的是( )。

A. 下一元素的地址

B. 内存储器的地址

C. 下一元素在数组中的位置

D. 左链或右链指向的元素的地址

【答案】C

【解析】静态链表的一般结构为:struct static_list{ElemType data;int next;}

这种结构是预先分配一个较大的空间,类似于一次申请一个较大的数组,但是元素的增删操作都不会移动元素,只需要移动next 成员就行。因此,静态链表中的指针实际上表示的就是下一个元素在数组中的位置。

3. 对下图进行拓扑排序, 可以得到不同的拓扑序列的个数是( )。

A.4

B.3

C.2

D.1

【答案】B

【解析】拓扑排序的步骤为:

(1)在有向图中选一个没有前驱的顶点并且输出它;

(2)从图中删除该顶点和以它为尾的弧。重复上述两步, 直至全部顶点均已输出。由于没有前驱的顶点可能不唯一, 所以拓扑排序的结果也不唯一。题中所给图有三个不同的拓扑排序序列, 分别为abced , abecd , aebcd 。

4. 栈和队的共同点是( )。

A. 都是先进后出

B. 都是后进先出

C. 只允许在端点处插入和删除元素

D. 没有共同点

【答案】C

【解析】栈和队列的区别是栈是先进后出的数据结构,队列是先进先出的数据结构,栈和队列的共同点是都只能在端点处插入和删除元素。

5. 可以用( )定义一个完整的数据结构。

A. 数据元素

B. 数据对象

C. 数据关系

D 抽象数据类型

【答案】D

【解析】抽象数据类型可以定义一个完整的数据结构。包括数据元素,数据元素之间的关系,以及可以进行的操作。

6. 下列进程调度算法中,综合考虑进程等待时间和执行时间的是( ).

A. 时间片轮转调度算法

B. 短进程优先调度算法

C. 先来先服务调度算法

D. 高响应比优先调度算法

【答案】D

【解析】时间片轮转法和先来先服务算法都是公平的方法,并未考虑进程等待时间和执行时

间,而短进程优先考虑的是进程执行时间. 最高响应比优先调度算法是最先执行响应比最高的进程(响应比=1+等待时间/估计运行时间). 该算法综合了先来先服务(FCFS)和短作业优先(SJF)算法,FCFS 只考虑每个作业的等待时间,而未考虑执行时间的长短.SJF 只考虑执行时间的长短,而未考虑等待时间的长短,HRRN 算法则同时考虑执行时间和等待时间.

7. 在任意一棵非空二叉排序树T1中, 删除某结点v 之后形成二叉排序树T2, 再将v 插入T2形成二叉排序树T3。下列关于T1与T3的叙述中, 正确的是( )

Ⅰ. 若v 是T1的叶结点, 则T1与T3不同

Ⅱ. 若v 是T1的叶结点, 则T1与T3相同

Ⅲ. 若v 不是T1的叶结点, 则T1与T3不同

Ⅳ. 若v 不是T1的叶结点, 则T1与T3相同

A. 仅Ⅰ、Ⅲ

B. 仅Ⅰ、Ⅳ

c. 仅Ⅱ、Ⅲ

d. 仅Ⅱ、Ⅳ

【答案】C

【解析】在一棵二叉排序树中删除一个结点后再将此结点插入到二叉排序树中, 如果删除的结点是叶子结点那么在插入结点后, 后来的二叉排序树与删除结点之前相同。如果删除的结点不是叶子结点, 那么再插入这个结点后, 后来的二叉树可能发生变化, 不完全相同。

8. 某文件占10个磁盘块, 现要把该文件磁盘块逐个读入主存缓冲区, 并送用户区进行分析。假设一个缓冲区与一个磁盘块大小相同,

把一个磁盘块读人缓冲区的时间为

送到用户区的时间是, CPU

对一块数据进行分析的时间为

下, 读人并分析完该文件的时间分别是( )。 A. B. C. D.

【答案】B

【解析】这是一个简单的缓冲区的问题。由于缓冲区的访问是互斥的, 所以对单一缓冲区, 从磁盘写入和读出到用户区的操作必须串行执行, 也就是要保证互斥操作。而CPU 对数据的分析与从用户区读数据也是需要互斥操作, 但是CPU 分析与从磁盘写入缓冲区的操作可以并行。从本题看, 由于分析所用的时间小于从磁盘写入缓冲区的时间, 因此, CPU 会空闲。

单缓冲区的总时间=(磁盘写入缓冲区时间+缓冲区读出时间)

间=(100+50)X10+50=1550ns。

当采用双缓冲区时, 每块缓冲区的操作也必须满足互斥操作, 但是, 对两块缓冲区的操作却可以并行, 所以, 当第一个缓冲区写满以后, 磁盘紧接着写另一个缓冲区, 同时, 前一个已经满了的缓

, 将缓冲区的数据传

。在单缓冲区和双缓冲区结构处理最后一块数据的时