2018年甘肃省培养单位近代物理研究所866计算机原理之数据结构考研仿真模拟五套题
● 摘要
一、填空题
1. 空格串是指_____,其长度等于_____。
【答案】由空格字符(ASCII值32) 所组成的字符串;空格个数
2. 已知二维数组
【答案】1196
【解析】设元素的行标为i ,列标为j 。则它的存储位置为:l000+[(i﹣l)*l0+(j﹣0)]*4
3. 用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是_____和_____;若只设尾指针,则出队和入队的时间复杂度分别是_____和_____。
【答案】O(1);O(n);O(1);O(1)
【解析】队列的出队操作即删除队头的元素,队列的入队操作即在队尾添加元素,循环链表只设头指针,出队时,只要把头结点的下一个结点删除就好了,入队时,要把新的结点插入队尾,必须把队列遍历,找到队尾指针,才能插入。循环队列只设尾指针,出队时只要把为指针的下一个结点或者下下个结点删除即可,入队时,只要在尾指针的后面插入新的结点,并更新尾结点即可。
4. 下面程序的功能是用递归算法将一个整数按逆序存放到一个字符数组中。如123存放成321。请填空:
(_____i);
=
_____.
_____
【答案】a +l ;n%10
中每个元素占4个单元,在按行优先方式将其存储到起始地址
为1000的连续存储区域时,A[5,9]的地址是: _____。
【解析】通过递归算法,首先找到最高位的值,将其放到str 对应的数组中,依次反向获取从高位到地位的值,将其放到数组中,完成了将整数逆序放到一个字符数组中。
5. 设正文串长度为n ,模式串长度为m ,则串匹配的KMP 算法的时间复杂度为_____。
【答案】O(m+n) 6. 假定查找有序表
【答案】
表
平均查找次数为
7. 建立索引文件的目的是_____。
【答案】提高查找速度
8. 循环队列的引入,目的是为了克服_____。
【答案】假溢出时大量移动数据元素
【解析】用数组实现队列时,如果不移动,随着数据的不断读写,会出现假满队列的情况。即尾数组已满但头数组还是空的。循环队列也是一种数组,引入循环队列,有效克服假溢出大量移动数据元素的问题。
9. 求最短路径的Dijkstra 算法的时间复杂度为_____。
【答案】
10.N 个顶点的连通图用邻接矩阵表示时,该矩阵至少有_____个非零元素。
【答案】
【解析】所谓连通图一定指的是无向图,有向图会称作强连通图。连接N 个顶点,至少需要N -1条边就可以了。由于无向图的每一条边同时关联了两个顶点。因此用邻接矩阵表示时,该矩阵至少有2(N-1) 个非零元素。
。
中每个元素的概率相等,则进行折半查找时的平均查找长度为_____。
【解析】折半查找时每个的次数如表所示:
二、单项选择题
11.在下面的程序段中,对x 的赋值语句的时间复杂度为( )
A.O(2n) B.O(n)
C.O(n) D.O(log2n ) 【答案】C
【解析】两个循环嵌套,那么语句x :=x+l:则被执行了n 次。
12.进程P0和P1的共享变量定义及若进程P0和P1访问临界资源的类C 伪代码实现如下:
2
则并发执行进程P0和PI 时产生的情况是( ). A. 不能保证进程互斥进入临界区,会出现“饥饿”现象 B. 不能保证进程互斥进入临界区,不会出现“饥饿”现象 C. 能保证进程互斥进入临界区,会出现“饥饿”现象 D. 能保证进程互斥进入临界区,不会出现“饥饿”现象 【答案】D
【解析】这是皮特森算法(Peterson’SAlgorithm)的实现,保证进入临界区的进程合理安全. 该算法为了防止两个进程为进入临界区而无限期等待,设置变量tum ,表示不允许进入临界区的编号,每个进程在先设置自己标志后再设置turn 标志,不允许另一个进程进入,这时,再同时检测另一个进程状态标志和不允许进入标志,这样可以保证当两个进程同时要求进入临界区时只允许一个进程进入临界区. 保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入. 先到先人,后到等待,从而完成临界区访问的要求.
13.在一株高度为2的5阶B 树中, 所含关键字的个数最少是( )
A.5 B.7 C.8 D.14
【答案】A
【解析】根据B 树的定义可知, 跟结点最少含有max(2, (m-1))个关键字, 高度为2的阶B 树最