2017年南京大学2307生物医学工程专业综合之数据结构(C语言版)复试仿真模拟三套题
● 摘要
一、应用题
1. 外排序中为何采用k 一路
么?
【答案】外排序用路归并是因为k 越小,归并趟数越多,读写外存次数越多,时间效率越低,故一般应大于最少的2-路归并。若将k-路归并的败者树思想单纯用于内排序,因其由胜者树改进而来,且辅助空间大,完全可由堆排序取代,故将其用于内排序效率并不高。
2. 设散列表为,现采用双散列法解决冲突。散列函数和再哈希函即表的大小为
数分别为
:
注:%是求余数运算
中,函数
码序列为
(2)计算搜索成功的平均搜索长度表示颠倒十进制数x 的各位,如 其等。若插入的关键
合并而不用2—路合并? 这种技术用于内排序有意义吗? 为什(1)试画出插入这8个关键码后的哈希表;
【答案】(1)插入这8个关键码后的哈希表如表所示:
表 插入关键字后的哈希表
(2)
3. 组织待检索文件的倒排表的优点是什么?
【答案】倒排表作为索引的优点是索引记录快,因为从次关键字值直接找到各相关记录的物理记录号,倒排因此而得名(因通常的查询是从关键字查到记录)。在插入和删除记录时,倒排表随之修改,倒排表中具有相同次关键字的记录号是有序的。
4. 画出同时满足下列两个条件的两棵不同的二叉树。
(1)按前序遍历二叉树的顺序为ABCDE 。
(2)高度为5其对应的树(森林)的高度最大为4。
【答案】(1)满足条件的二叉树如图1所示:
图1
(2)满足条件的二叉树如图2所示:
图2
5. 请求分页管理系统中,假设某进程的页表内容如下表所示:
页面大小为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 。
6. 文件存储结构的基本形式有哪些? 一个文件采用何种存储结构应考虑哪些因素?
【答案】文件的基本组织方式有顺序组织、索引组织、散列组织和链组织,常用的结构有顺序结构、索引结构、散列结构。
(1)顺序结构,相应文件为顺序文件,其记录按存入文件的先后次序顺序存放。顺序文传本质上就是顺序表。若逻辑上相邻的两个记录在存储位置上相邻,则为连续文件;若记录之间以指针相链接,则称为串联文件。顺序文件只能顺序存取,要更新某个记录,必须复制整个文件。顺序文件连续存取的速度快,主要适用于顺序存取,批量修改的情况。
(2)带索引的结构,相应文件为索引文件。索引文件包括索引表和数据表,索引表中的索引项包括数据表中数据的关键字和相应地址,索引表有序,其物理顺序体现了文件的逻辑次序,实现了文件的线性结构。索引文件只能是磁盘文件,既能顺序存取,又能随机存取。
(3)散列结构,也称计算寻址结构,相应文件称为散列文件,其记录是根据关键字值经哈希函数计算确定其地址,存取速度快,不需索引,节省存储空间。不能顺序存取,只能随机存取。
文件采用何种存储结构应综合考虑各种因素,如:存储介质类型、记录的类型、大小和关键字的数目以及对文件作何种操作。
7. 设输入序列为2, 3, 4, 5, 6, 利用一个栈能得到序列2, 5, 3, 4, 6吗? 栈可以用单链表实现吗?
【答案】不能得到序列2, 5, 3, 4, 6。因为根据输入序列,2进栈之后,2出找,3, 4, 5依次进栈。5出栈,此时栈中剩下3, 4。因为4在栈顶,所以4应该比3先出栈,不能得到提供的序列。栈可以用单链表实现,这就是链栈。由于栈只在栈顶操作,所以链栈通常不设头结点。
8. 从概念上讲,树、森林和二叉树是三种不同的数据结构,将树、森林转化为二叉树的基本目的是什么? 并指出树和二叉树的主要区別。
【答案】(1)基本目的
树的孩子兄弟链表表示法和二叉树的二叉链表表示法本质是一样的,只是解释不同,也就是说树(树是森林的特例,即森林中只有一棵树的特殊情况)可用二叉树唯一表示,并可使用二叉树的一些算法去解决树和森林中的问题。