2017年宁波大学通信原理之数据结构(C语言版)考研复试核心题库
● 摘要
一、应用题
1. 假设以S 和X 分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由S 和X 生成的序列表示(如SXSX )。
(1)试指出判别给定序列是否合法的一般规则;
(2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列? 如能得到,请举列说明。
【答案】(1)通常有两条规则。第一是给定序列中S 的个数和X 的个数相等;第二是从给定序列的开始,到给定序列中的任一位置,S 的个数要大于或等于X 的个数。
(2)可以得到相同的输出元素序列。例如,输入元素为A , B , C , 则两个输入的合法序列ABC 和BAC 均可得到输出元素序列ABC 。对于合法序列ABC ,使用SXSXSX 操作序列;对于合法序列BAC ,使用SSXXSX 操作序列。
2. 阅读下列算法,指出算法A 的功能和时间复杂性。
【答案】功能:将原单循环链表分解成两个单循环链表:其一包括结点h 到结点g 的前驱结点;另一个包括结点g 到结点h 的前驱结点。
时间复杂度:0(n )。
3. 一个循环队列的数据结构描述如下:
给出循环队列的队空和队满的判断条件,并且分析一下该条件对队列实际存储空间大小的影响,如果为了不损失存储空间,你如何改进循环队列的队空和队满的判断条件?
【答案】(1)队空:
(2)队满:
这种判断方法,会“牺牲一个存储单元”。为了不损失存储空间,可以通过设置标志位的方式来进行队空和队满的判断。设标记tag ,tag 等于0情况下,若删除时导致front=rear为队空; tag=l情况下,若因插入导致front=rear则为队满。
4. 在各种排序方法中,哪些是稳定的? 哪些是不稳定的? 并为每一种不稳定的排序方法举出一个不稳定的实例。
【答案】各种排序算法稳定性的归纳如图所示:
图
5. 从概念上讲,树、森林和二叉树是三种不同的数据结构,将树、森林转化为二叉树的基本目的是什么? 并指出树和二叉树的主要区別。
【答案】(1)基本目的
树的孩子兄弟链表表示法和二叉树的二叉链表表示法本质是一样的,只是解释不同,也就是说树(树是森林的特例,即森林中只有一棵树的特殊情况)可用二叉树唯一表示,并可使用二叉树的一些算法去解决树和森林中的问题。
(2)主要区别
一是二叉树的度至多为2,树无此限制;二是二叉树有左右子树之分,即使在只有一个分支的情况下,也必须指出是左子树还是右子树,树无此限制:三是二叉树允许为空,树一般不允许为空(有些书上考虑到与二叉树的转换,允许树为空)。
6. 某请求分页系统的局部页面置换策略如下:系统从0时刻开始扫描,每隔5个时间单位扫描,本轮没有被访问过的页框将被系统回收,并放入到空闲页框链一轮驻留集(扫描时间忽略不计)
尾,其中内容在下一次被分配之前不被清空。当发生缺页时,如果该页曾被使用过且还在空闲页框链表中,则重新放回进程的驻留集中;否则,从空闲页框链表头部取出一个页框。假设不考虑其他进程的影响和系统开销,初始时进程驻留集为空。目前系统空闲页框链表中页框号依次为32、15、21、41。进程
(1)访问(2)访问(3)访问【答案】
(1)页框号为21。因为起始驻留集为空,而0页对应的页框为空闲链表中的第三个空闲页框,其对应的页框号为21。
(2)页框号为32。理由:因11>10故发生第三轮扫描,页号为1、3的页框32、15在第二轮已处于空闲页框链表中,此刻1页又被重新访问,因此应被重新放回到驻留集中。其页框号为32。
(3)页框号为41。理由:因为第2页从来没有被访问过,它不在驻留集中,因此从空闲页框链表中取出链表头的页框41,页框号为41。
(4)适合。理由:如果程序的时间局部性越好,从空闲页框链表中重新取回的机会越大,该策略的优势越明显。
7. 写出下列排序算法的基本思想,并写出对序列(23,12,35,47,16,25,36,19,21,16)进行排序时每一趟的结果。
【答案】此排序为双向起泡排序:从前向后一趟排序下来得到一个最大值,若其中发生交换,则再从后向前一趟排序,得到一个最小值。
第一趟:12,23,35,16,25,36, 19,21,16, 47
P 依次访问的<虚拟页号,访问时刻>是
:
请回答下列问题。
时,对应的页框号是什么?
时,对应的页框号是什么? 说明理由。 . 时,对应的页框号是什么? 说明理由。
(4)该策略是否适合于时间局部性好的程序? 说明理由。
相关内容
相关标签