2017年甘肃农业大学0951农业推广硕士数据结构(加试)考研复试核心题库
● 摘要
一、应用题
1. 请求分页管理系统中,假设某进程的页表内容如下表所示:
页面大小为4KB ,一次内存的访问时间是100ns ,一次快表(TLB )的访问时间是10ns ,处,进程的驻留集大小固定为2, 采理一次缺页的平均时间为108ns (已含更新TLB 和页表的时间)
用最近最少使用置换算法(LRU )和局部淘汰策略。假设①TLB 初始为空;②地址转换时先访问TLB , 若TLB 未命中,再访问页表(忽略访问页表之后的TLB 更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列
请问:
(1)依次访问上述三个虚地址,各需多少时间? 给出计算过程。
(2)基于上述访问序列,虚地址1565H 的物理地址是多少? 请说明理由。 【答案】⑴
页面大小为4KB ,因此,虚地址的低12位是页内偏移,其余高位是页号。
访问虚地址2362H , 虚页号为2,页内偏移362H 。查找TLB , TLB 初始为空,未命中,耗时10ns ; 访问页表,2号页面所在页框号为254H ,耗时100ns ; 计算得到的物理地址254362H ,访问内存,耗时100ns 。因此,总共用时
访问虚地址1565H ,虚页号为1, 页内偏移565H 。查找TLB ,未命中,耗时10ns ; 访问页表,有效位是0,未命中,耗时100m ; 产生缺页中断,进行缺页中断处理,耗时108m ; 采用LRU 置换算法,虚页1装入页帧号101H , 缺页中断处理完后,再次访问页表,命中,耗时100m ; 计算得到物理地址101565H ,再次访问内存,耗时100ns 。因此,总共用时
访问虚地址25A5H ,虚页号为2, 页内偏移5A5H 。查找TLB , 命中,耗时10ns ; 虚页2对应的页帧为254H ,因此计算得物理地址为2545A5H , 访问内存,耗时100ns 。因此,
总共用时
(2)当访问虚地址1565H 时,产生缺页中断,合法驻留集为2, 必须从页表中淘汰一个页面,根据题目的置换算法,应淘汰0号页面,因此1565H 的对应的页框号为101H ,故可知虚地址1565H 的物理地址为101565H 。
2. 请回答下列关于堆(Heap )的一些问题:
(1)堆的存储表示是顺序的还是链接的?
(2)设有一个最小堆,即堆中任意结点的关键码均不大于它的左子女和右子女的关键码。其具有最大值的元素可能在什么地方?
(3)对n 个元素进行初始建堆的过程中,最多做多少次数据比较(不用大0表示法)? 【答案】(1)堆的存储是顺序的。
(2)最大值元素一定是叶结点,在最下两层上。
(3)在建含有n 个元素、深度为h 的堆时,其比较次数不超过4n ,推导如下: 由于第i 层上的结点数至多是
以它为根的二叉树的深度为
则调用
次筛选算
法时总共进行的关键字比较次数不超过下式之值:
3. 已知n 阶下三角矩阵A (即当
时,有,按照压缩存储的思想,可以将其主对角线以)
下所有元素(包括主对角线上元素)依次存放于一维数组B 中,请写出从第一列开始采用列序为主序分配方式时在B 中确定元素的存放位置的公式。
【答案】2
阶下三角矩阵元素第1列到第
列是梯形,元素数为
第1列有n 个元素,第j 列有而在第j 列上的位置是为
4. 用单链表保存m 个整数,节点的结构为(data , link ), 且点而删除其余绝对值相等的节点。
例如若给定的单链表head 如下
删除节点后的head 为
要求
(1)给出算法的基本思想 (2)使用c 或
语言,给出单链表节点的数据类型定义。
语言描述算法,关键之处给出注释。
(3)根据设计思想,采用c 或【答案】(1)算法思想:
定义一个大小为n 的布尔数组flag ,初始时所有的元素都赋值为false , 用来标识遍历过程中是
个元素,所以n
阶下三角矩阵A 按列存储,其元素在一维数组B 中的存储位置k 与i 和j 的关系为:
(n 为正整数)。现要求
设计一个时间复杂度尽可能高效地算法,对于链表中绝对值相等的节点,仅保留第一次出现的节
(4)说明所涉及算法的时间复杂度和空间复杂度。
否出现元素绝对值为flag 的节点。然后遍历链表,遍历过程中,每一个当前结点data 域的绝对值,则将flag 位置为真(true )所对应的flag 位:若为真,则删除该结点;若为假(false )。
(2)节点的数据结构定义如下:
(3)
全局数组标志节点的绝对值是否出现过
如果此绝对值已经在节点值的绝对值中出现过则删除该节点
否则,将flag 中对应的位置置为true ,并将指针指向下一个元素
,申请大小(4)只遍历一次链表,所以时间复杂度为0 (m ) (m 为单链表中元素的个数)
为n 的数组,所以空间复杂度为0 (n ) (n 为节点绝对值的最大值)。
5. 队列可以用循环单链表来实现,故可以只设置一个头指针或者只设置一个尾指针。请你分析对于循环单链表实现的队列,用哪种方案更合适。
【答案】循环单链表若只设头指针,则出队操作时间复杂度是是
若只设尾指针,则出队和入队操作时间复杂度都是
而如对操作时间复杂度
因此,用循环单链表来实现队
列,设置一个尾指针更合适。
6. 已知一棵二叉树的后序遍历序列为EICBGAHDF , 同时知道该二叉树的中序遍历序列为CEIFGBADH , 试画出该二叉树。
【答案】该二叉树如图所示: