2017年河北大学数学与信息科学学院907数据结构考研题库
● 摘要
一、选择题
1. 一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到( )个不同的码字。
A.107
B.108
C.214
D.215
【答案】B
【解析】此题可转化为一棵哈夫曼树共有215个结点,共有多少叶子结点。又有
以
2. 当系统发生抖动(thrashing )时,可以采取的有效措施是( )。
I. 撤销部分进程
II. 增加磁盘交换区的容量
III. 提高用户进程的优先级
A. 仅I
B. 仅 II
C. 仅III
D. 仅 I 、II
【答案】A
【解析】“抖动”现象是指刚刚被换出的页很快又要被访问,为此,又要换出其他页,而该页
必须换入,又很快被访问,如此频繁地置换页面,以致操作系统的大部分时间都花在页面置换上,
引起系统性能下降甚至崩溃。 引起系统抖动现象的原因是对换的信息量过大,内存容量不足,置换算法选择不当。所以解决的办法就是降低交 换页面数量,加大内存容量,改变置换选择算法。但是降低交换页面数量和改变置换选择算法对于一个应用系统 来讲是不可能的,只能增加内存容量。増加内存容量可以是直接添加物理内存(大型计算机都可以在不关机的情 况下增加物理内存
,或者,降低进程数量,相对地增加内存。而増加交换区容量并不能解决物理内存不足的 问条)
题,提高用户进程的优先级会使系统的状态更加恶化。
3. 以太网交换机进行转发决策时使用的PDU 地址是( )。
A. 目的物理地址
B. 目的IP 地址
C. 源物理地址
D. 源IP 地址
【答案】A
所
也就是说若对其进行哈夫曼编码,共能得到108个码字。
【解析】交换机会监测发送到每个端口的数据帧,通过数据帧中的有关信息(源结点的MAC 地址、目的结点的MAC 地址), 就会得到与每个端口所连接结点的MAC 地址, 并在交换机的内部建立一个“端口-MAC 地址”映射表。建立映射表后,当某个端口接收到数据帧后,交换机会读取出该帧中的目的结点的MAC 地址,并通过“端口-MAC 地址”的对应关系,迅速将数据帧转发到相应的端口,注意这里的交换机工作在数据链路层,因此关于IP 地址的选项是不对的,因此答案为A 。
4. 图的BFS 生成树的树高比DFS 生成树的树高( )。
A. 小或相等 B. 小 C. 大或相等 D. 大
【答案】A
【解析】BFS 称作广度优先搜索,DFS 称作深度优先搜索。广度优先搜索类似与二叉树的层序遍历算法,深度优先搜索类似于树的先序遍历。因为深度优先搜索算法遵循的策略是尽可能的“深”地搜索一个图。所以图的BFS 生成树的树高比DFS 生成树的树高小或者相等。
5. 数据链路层采用后退N 帧(GBN )协议,发送方已经发送了编号为0〜7的倾。当计时器超时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是( )。
A.2
B.3
C.4
D.5
【答案】C
【解析】后退N 帧协议,即GO-BACK-N 策略的基本原理是,当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N 个帧后,若发现该N 帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N 帧。本题收到3号帧的确认,说明0,1,2,3号帧已经收到,丢失的是4,5,6, 7号帧,共4帧。因此答案为C 项。
6. 向一个栈顶指针为h 的带头结点的链栈中插入指针S 所指的结点时,应执行( )。
【答案】D
【解析】本题是向一个链栈中插入结点,可从头结点后插入。先将s 结点指向第一个头结点之后的结点之前,再将头结点指向s 结点。
7. 在下列存储形式中,哪一个不是树的存储形式?( )
A. 双亲表示法
B. 孩子链表表示法
C. 孩子兄弟表示法
D. 顺序存储表示法
【答案】D
【解析】顺序存储就是利用一段连续的存储单元依次存储线性表中的元素。树中某个结点的孩子可以有多个,这就意味着,无论用哪种顺序将树中所有的结点存储到数组中,结点的存储位置都无法直接反映逻辑关系。因此简单的顺序存储表示不能满足树的基本要求。常用的三种树的表示法为:双亲表示法、孩子链表示法、孩子兄弟表示法。
8. 连续存储设计时,存储单元的地址( )。
A. 一定连续
B. 一定不连续
C. 不一定连续
D. 部分连续,部分不连续
【答案】A
【解析】连续存储是指数据的物理存储相连,即存储单元的地址是连续的。
9. 有两个并发执行的进程P1和P2, 共享初值为1的变量x 。P1对x 加1, P2对x 减1。加1和减1操作的指令序列分别如下所示。
//取x 到寄存器R1中
两个操作完成后,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 值的变化为初始1→2→1的过程,若P2, P1先后操作,则x 值的变化为初始1→0→1,这是正确的。若考虑一种并发的情况,进程P1和P2先后执行了取数load 的操作,它们得到的x 值均为1,运算后,P1和P2的x 值分别为2和0, 此时要看哪个进程后执行存数store 的 操作了,哪个进程后操作,结果就是那个进程的x 值,所以可能的结果为0或2, 加上前面正确的x 值1, 则可能的结果就有3种了。