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

2018年西北工业大学电子信息学院880数据库、数据结构与程序设计之数据结构考研核心题库

  摘要

一、单项选择题

1. 下列关于最小生成树的叙述中, 正确的是( )。

Ⅰ. 最小生成树的代价唯一

Ⅱ. 所有权值最小的边一定会出现在所有的最小生成树中

Ⅲ. 使用普里姆(Prim)算法从不同顶点开始得到的最小生成树一定相同

IV. 使用普里姆算法和克鲁斯卡尔(Kmskal)算法得到的最小生成树总不相同

A. 仅Ⅰ

B. 仅Ⅱ

C. 仅Ⅰ、Ⅲ

D. 仅Ⅱ、Ⅳ

【答案】A 。

【解析】当图中存在相同权值的边时, 其最小生成树可能是不唯一的, 但最小生成树的代价一定是相同的, 所以说法Ⅰ正确。从n 个顶点的连通图中选取n-1条权值最小的边可能构成回路, 所以说法Ⅱ错误。

当某个顶点有权值相同的边, 使用普里姆(Prim)算法从不同顶点开始得到的最小生成树并不一定相同, 所以说法Ⅲ错误。当最小生成树不唯一时, 使用普里姆算法和克鲁斯卡尔(Kmskal)算法得到的最小生成树可能相同, 也可能不同, 所以说法Ⅳ错误。由此可得出正确答案。

2. 用户程序发出磁盘请求后, 系统的处理系统的处理流程是:用户程序一系统调用处理程序—设备骆动程序一中断处理程序。其中, 计算数据所在磁盘的柱面号、磁头号、扇区号的程序是( )

A. 用户程序

B. 系统调用处理程序

C. 设备驱动程序

D. 中断处理程序

【答案】C

【解析】计算磁盘号、磁头号和扇区号的工作是由设备驱动程序完成的, 所以答案选C 。

3. 广义表A =(a,b ,(c,d) ,(e,(f,g))) , 则式子Head(Tail(Head(Tail(Tail(A)))))的值为( )。

A.(g)

B.(d)

C.c

D.d

【答案】D

【解析】head 操作就是得到广义表中第一个的原子。tail 操作就是得到除第一个原子外剩下元素构成的表。也就是tail 得到的元素需要在外层再加一个( )。

4. 为提高散列(Hash)表的查找效率, 可以采用的正确措施是( )。

Ⅰ. 增大装填(载) 因子

Ⅱ. 设计冲突(碰撞) 少的散列函数

Ⅲ. 处理冲突(碰撞) 时避免产生聚集(堆积) 现象

A. 仅Ⅰ

B. 仅Ⅱ

C. 仅Ⅰ、Ⅱ

D. 仅Ⅱ、Ⅲ

【答案】D

【解析】散列表的查找效率(比较次数) 取决于:散列函数、处理冲突的方法和散列表的装填因子α。α标志着散列表的装满程度, 通常情况下, α越小, 发生冲突的可能性越小; 反之, α越大, 表示已填入的记录越多, 再填入记录时, 发生冲突的可能性越大。因此选项Ⅰ错误, 越是增大装填因子, 发生冲突的可能性就越大, 查找效率也越低。选项Ⅱ正确。选项Ⅲ正确。采用合适的处理冲突的方法避免产生聚集现象, 也将提高查找效率。例如, 用拉链法解决冲突时不存在聚集现象, 用线性探测法解决冲突时易引起聚集现象。

5. 某主机的IP 地址为, 子网掩码为。若该主机向其所在子网发送广播分组, 则目的地址可以是( )。 A. B. C. D.

【答案】D 。

【解析IPv4地址中的特殊地址, 直接广播地址, 也就是把主机位全部设置为1, 这里77的二进制是01001101, 子网掩码252的二进制是11111100, 由此可以看到77的前6位作为子网位, 后四位

, 也就是作为主机位, 由此可以知道其广播地址是

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

A. 系统调用

B. 外部中断

C. 进程切换

D. 缺页

, 因此答案是D 。

【答案】C 。

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

7. 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。

A. 单链表

B. 仅有头指针的单循环链表

C. 双链表

D. 仅有尾指针的单循环链表

【答案】D

【解析】仅有尾指针的单循环链表,在最后插入元素和删除第一个元素都会用到这个尾指针。

8. 对关键码序列28,16,32,12,60,2,5,72快速排序,从小到大一次划分结果为( )。

A.(2,5,12,16)26(60,32,72)

B.(5,16,2,12)28(60,32,72)

C.(2,16,12,5)28(60,32,72)

D.(5,16,2,12)28(32,60,72)

【答案】B

【解析】快速排序是将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小。

第一次比较:28比72小,不交换;

第二次比较:28比5大,交换,此时为(5,16,32,12,60,2,28,72) ;

第三次比较:16比28小,不交换;

第四次比较:32比28大,交换,此时为(5,16,28,12,60,2,32,72) ;

第五次比较:28比2大,交换,此时为(5,16,2,12,60,28,32,72) ;

第六次比较:28比12大,不交换;

第七次比较:28比60小,交换,此时为(5,16,2,12,28,60,32,72) ;

一次划分结束。