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

2017年宁波大学C程序设计之数据结构(C语言版)考研复试核心题库

  摘要

一、应用题

1. 某计算机字长16位,主存地址空间大小为128KB , 按字编址,采用单字长指令格式,指令各字段定义如下:

源操作数目的操作数

转移指令采用相对寻址方式,相对偏移量用补码表示,寻址方式定义如下:

注:(X )表示存储器地址X 或寄存器X 的内容。请回答下列问题:

(1)该指令系统最多可有多少条指令? 该计算机最多有多少个通用寄存器? 存储器地址寄存器(MAR )和存储器数据寄存器(MDR )至少各需要多少位?

(2)转移指令的目标地址范围是多少?

(3)若操作码0010B 表示加法操作(助记符为add ), 寄存器R4和R5的编号分别为100B 和101B ,R4的内容为1234H ,R5的内容为5678H , 地址1234H 的内容为5678H ,地址5678H 中的内容为1234H ,则汇编语句

改变后的内容是什么?

【答案】(1)指令操作码占4位,则指令系统最多可有

量为128KB ,计算机字长为16位,故主存有

需16位。

(2)由于寄存器字长为16位,所以转移指令的目标地址范围为0000H 〜FFFFH 。。

(3)汇编语句

寄存器

R5和地址为5678H 的存储单元的内容会改变,改变后的内容分别为

第 2 页,共 35 页 (逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会改变? 条不同的指令;指令操作上占6个通用寄存器;主存容个存储单元,故MDR 和MAR 至少各位,寻址方式占3位,于是寄存器编号占3位,该计算机最多可以有+对应的机器码为该指令执行后,

2. 已知两个各包含IV 和M 个记录的排好序的文件能在时间内合并为一个包含个记录的排好序的文件。当有多于两个排好序的文件要被合并在一起时,只需重复成对地合并便可完成。合并的步骤不同,所需花费的记录移动次数也不同。现有文件,FI ,F2,F3,F4,F5,各有记录数为20,30,10,5和30,试找出记录移动次数最少的合并步骤。

,【答案】类似最优二叉树(哈夫曼树)可先合并含较少记录的文件,后合并较多记录的文件,

使移动次数减少,如图所示的哈夫曼树。

3.

设与记录

对应的关键字分别是

进行交换。

之前全部记录(其的关键字一定如果存在

使得

且成立,试证明经过一趟起泡后,一定有记录与值。由题假设知中包括在之前且则即说明和【答案】起泡排序思想是相邻两个记录的关键字比较,若反序则交换,一趟排序完成得到极是反序;设对于)中关键字最大为,故经过起泡排序前i-2次比较后,

为又因故和Rf 为反序,由此可知和必定交换,证毕。

4. 某请求分页系统的局部页面置换策略如下:系统从0时刻开始扫描,每隔5个时间单位扫描

,本轮没有被访问过的页框将被系统回收,并放入到空闲页框链一轮驻留集(扫描时间忽略不计)

尾,其中内容在下一次被分配之前不被清空。当发生缺页时,如果该页曾被使用过且还在空闲页框链表中,则重新放回进程的驻留集中;否则,从空闲页框链表头部取出一个页框。假设不考虑其他进程的影响和系统开销,初始时进程驻留集为空。目前系统空闲页框链表中页框号依次为32、15、21、41。进程

(1)访问

(2)访问

(3)访问

【答案】

(1)页框号为21。因为起始驻留集为空,而0页对应的页框为空闲链表中的第三个空闲页框,其对应的页框号为21。

(2)页框号为32。理由:因11>10故发生第三轮扫描,页号为1、3的页框32、15在第二

第 3 页,共 35 页 P 依次访问的<虚拟页号,访问时刻>是

:请回答下列问题。 时,对应的页框号是什么? 时,对应的页框号是什么? 说明理由。 . 时,对应的页框号是什么? 说明理由。 (4)该策略是否适合于时间局部性好的程序? 说明理由。

轮已处于空闲页框链表中,此刻1页又被重新访问,因此应被重新放回到驻留集中。其页框号为32。

(3)页框号为41。理由:因为第2页从来没有被访问过,它不在驻留集中,因此从空闲页框链表中取出链表头的页框41,页框号为41。

(4)适合。理由:如果程序的时间局部性越好,从空闲页框链表中重新取回的机会越大,该策略的优势越明显。

5. 设有一棵算术表达式树,用什么方法可以对该树所表示的表达式求值?

【答案】有两种方法,具体如下:

(1)对该算术表达式(二叉树> 进行后序遍历. 得到表达式的后序遍历序列,再按后缀表达式求值。

(2)递归求出左子树表达式的值,再递归求出右子树表达式的值,最后按根结点运算符(+、

一、*、/等) 进行求值。

6. 对一个有t 个非零元素的矩阵,用的数组来表示,其中第0行的三个元素分别为m ,n ,t ,从第一行开始到最后一行,每行表示一个非零元素;第一列为矩阵元素的行号,第二列为其列号,第三列为其值。对这样的表示法,如果需要经常进行该操作-确定任意一个元素

在B 中的位置并修改其值,应如何设计算法可以使时间得到改善?

【答案】题中矩阵非零元素用三元组表存储,查找某非零元素时,按常规要从第一个元素开始查找,属于顺序查找,

时间复杂度为若使查找时间得到改善,可以建立索引,将各行行号及各行第一个非零元素在数组B 中的位置(下标)放入一向量C 中。若查找非零元素,可先在数组C 中用折半查找到该非零元素的行号,并取出该行第一个非零元素在B 中的位置,再到B 中

顺序(或折半)查找该元素,这时时间复杂度为

7. 设哈希(Hash )表的地址范围为0~17,哈希函数为:

造出哈希表,试回答下列问题:

(1)画出哈希表示意图;

(2)若查找关键字63,需要依次与哪些关键字比较?

(3)若查找关键字60,需要依次与哪些关键字比较?

(4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

【答案】(1)哈希表示意图如表所示:

表 哈希示意图

为关键字,用线性探测再散列法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49)

第 4 页,共 35 页