2018年福建师范大学软件学院842软件工程专业基础综合之数据结构考研基础五套测试题
● 摘要
一、填空题
1. 已知一循环队列的存储空间为
则此循环队列判满的条件是_____ 【答案】
2. 对n 个记录的表
【答案】n (n-1) /2
【解析】第一次需要n -1次比较,第i 此需要n -i 此比较,所以共需要
3. 建立索引文件的目的是_____。
【答案】提高查找速度
4. 完善算法:求KMP 算法.next 数组。
k :=_____;next[1]:=0;
k :=_____;
END ;
【答案】0;next[k]
5. 设单链表的结点结构为(data,next) ,next 为指针域,已知指针px 指向单链表中data 为x 的结点,指针py 指向data 为y 的新结点,若将结点y 插入结点x 之后,则需要执行以下语句: _____;_____;
【答案】py ﹣>next =px ﹣>next ;px ﹣>next =py
6. 当两个栈共享一存储区时,栈利用一维数组stack(1,,1) 表示,两栈顶指针为top[l]与top[2],则当栈1空时,top[l]为_____,栈2空时,top[2]为_____,栈满时为_____。
【答案】0;n+1;top[l]+l=top[2]
【解析】共享栈的栈底在共享存储区的两端,当栈满时栈顶相邻。
,其中n >m ,队头和队尾指针分别为front 和rear , 进行简单选择排序,所需进行的关键字间的比较次数为_____。 。
7. 在下面的程序段中,对X 的赋值语句的时间复杂度为_____ (表示为n 的函数) 。
【答案】1+(1+2) +(1+2+3) +…+(l+2+…+n) =n(n+1)(n+2)/6,即O(n)
【解析】当i =l 时,赋值语句就被执行了一次。当i =2时,赋值语句被执行了1+2次。当i =3时,赋值语句被执行了1+2+3次。...... 可以推出赋值语句总共被执行了1+(1+2) +(1+2+3) +…+(l+2+... +n) =n(n+1)(n+2)/6次。
8. 已知链队列的头尾指针分别是f 和r ,则将值x 入队的操作序列是_____。
【答案】S =(LinkedList*)malloc(sizeof (LNode));s ﹣>data =x ;s ﹣>next =r ﹣>next ;r ﹣>next =s ;r =s ;
【解析】队列采用链式存储结构,先分配一个节点的内存,然后在队尾添加该节点。
9. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增
量序列) 依次是4, 2, 1则排序需_____趟,写出第一趟结束后,数组中数据的排列次序_____。
【答案】3; (10,7,-9,0,47,23,1,8,98,36)
10.栈是_____的线性表,其运算遵循_____的原则。
【答案】操作受限(或限定仅在表尾进行插入和删除操作) ;后进先出
11.高度为4的3阶B-树中,最多有_____个关键字。
【答案】26
【解析】第4层是叶结点,1层至3层每个结点两个关键字,每个节点的关键字达到最大时,关键字最多。
12.顺序存储结构是通过_____表示元素之间的关系的;链式存储结构是通过_____表示元素之间的关系的。
【答案】物理上相邻;指针
【解析】顺序存储结构是通过物理位置表示元素之间的关系的,链式存储结构通过指针表示元素之间的关系。
二、单项选择题
13.下列四个序列中,哪一个是堆( )?
A.75,65,30,15,25,45,20,10
B.75,65,45,10,30,25,20,15
C.75,45,65,30,15,25,20,10
D.75,45,65,10,25,30,20,15
【答案】C
【解析】堆的定义:
n 个关键字序列
①②且且 称为堆,当且仅当该序列满足如下性质(简称为堆性质) : 小根堆:满足第①种情况的堆;
大根堆:满足第②种情况的堆。
根据堆定义即可得出答案。
14.已知串其Next 数组值为( )。
A.0123
B.1123
C.1231
D.1211
【答案】A
【解析】KMP 算法的next 数组建立的原则
15.设有一个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。
16.分区分配内存管理方式的主要保护措施是( ).
A. 界地址保护
B. 程序代码保护
C. 数据保护
D. 栈保护
【答案】A
【解析】对于连续分配算法,无论固定分区或动态分区方法,程序都必须全部调入内存,不