2018年电子科技大学计算机科学与工程学院820计算机专业基础之数据结构考研强化五套模拟题
● 摘要
一、填空题
1. 实现字符串拷贝的函数strcpv 为:
(_____)
【答案】s++=*t++或(*s++=*t++)!='\0‟
2. VSAM(虚拟存储存取方法) 文件的优点是:动态地_____,不需要文件进行_____,并能较快地_____进行查找。
【答案】分配和释放存储空间;重组;对插入的记录
3. 下面程序的功能是用递归算法将一个整数按逆序存放到一个字符数组中。如123存放成321。请填空:
(_____i);
=
_____.
_____
【答案】a +l ;n%10
【解析】通过递归算法,首先找到最高位的值,将其放到str 对应的数组中,依次反向获取从高位到地位的值,将其放到数组中,完成了将整数逆序放到一个字符数组中。
4. 在单链表L 中,指针P 所指结点有后继结点的条件是_____
【答案】P ﹣>next! =NULL
【解析】指针所指节点的指针域所指向的元素非空,说明该指针所指节点有后继结点。
5. 以下是用类C 语言写出的算法,该算法将以二叉链表存储的二叉树中的叶结点按从左到右的顺序链成一个带头结点的双向循环链表,链接时,结点的Lchild 域作为前链域,指向结点的直接前驱,结点的Rchild 域作为后链域,指向结点的直接后继。算法中,使用一个顺序栈stack , 栈顶指针为top ,P ,t 为辅助指针,head 为双向循环链表的头指针。试填充算法中的空格,使算法完整。
【答案】
二、单项选择题
6. 向一个栈顶指针为h 的带头结点的链栈中插入指针S 所指的结点时,应执行( )。
A.h ﹣>next =s ;
B.s ﹣>next =h ;
C.s ﹣>next =h ;h ﹣>next =s ;
D.s ﹣>next =h ﹣next ;h ﹣>next =s ;
【答案】D
【解析】本题是向一个链栈中插入结点,可从头结点后插入。先将s 结点指向第一个头结点之后的结点之前,再将头结点指向s 结点。
7. 设有一个n 行n 列的对称矩阵A ,将其下三角部分按行存放在一个一维数组B 中,A[0][0]存放于B[0]中,那么第i 行的对角元素A[i][i]存放于B 中( )处。
A.(i+3)*i/2
B.(i+1)*i/2
C.(2n﹣i +l)*i/2
D.(2n﹣i ﹣l)*i/2
【答案】A
【解析】A[i][i]中列标不大于行标,又A[0][0]存放在B[0]中,所以A[i][i]存放的位置为i*(i
+l)/2+i +l ﹣l =i*(i+3)/2。
8. 在缺页处理过程中, 操作系统执行的操作可能是( )。
Ⅰ. 修改页表
Ⅱ. 磁盘
Ⅲ. 分配页框
A. 仅Ⅰ、Ⅱ
B. 仅Ⅱ
C. 仅Ⅲ
D. Ⅰ、Ⅱ和Ⅲ
【答案】D
【解析】首先我们要考虑的是, 为什么会发生缺页中断? 当然, 在一个采用虚拟存储管理技术的系统中, 程序是部分装入的, 还有部分是处于外存上的, 因此, 当需要访问那部分位于外存上的代码或数据时, 系统会产生缺页中断。产生缺页中断的目的是要将位于外存上的代码或数据装入内存, 据此, 缺页中断接下去所做的工作就是首先要在内存中找到空闲页框并分配给需要访问的页(若没有空闲的页面则要调用页面置换程序找到一处页面, 将该页面的内容处理掉, 或回写磁盘, 或覆盖掉, 然后将此页分配给需要访问的页) , 分配妥当以后,
缺页中断处理程序调用设备驱动程序做磁盘
, 将位于外存(一般是磁盘) 上的页面调入内存, 调入后转身去修改页表, 将页表中代表该页是否在内存的标志位(一般称为存在位或有效位、在位位) 修改为“真”, 将物理页框号填入相应位置, 若必要还需修改其它相关表项等。完成上述任务后, 缺页中断处理程序返回, 继续程序的执行。从上述过程可以看出, 涉及的相关处理非常多, 因此, 答案就显而易见了。
9. 图G 是n 个顶点的无向完全图,则下列说法不正确的是( )
A.G 的邻接多重表需要n(n-1) 个边结点和n 个顶点结点
B.G 的连通分量个数最少
C.G 为连通图
D.G 所有顶点的度的总和为n(n—1)
【答案】A
A 项中G 的邻接多重表中需要【解析】个边结点和n 个顶点结点。此时连通分量最少
为1。无向完全图中任意两个顶点之间都存在路径,则G 必为连通图。每个顶点的度为n -1,则n 个结点的度的总和为n(n-1) 。
10.下列不是设计一个“好”的算法应考虑达到的目标是( )。
A. 可行的
B. 健壮的
C. 无二义性的