当前位置:问答库>考研试题

2017年闽南师范大学粒计算重点实验室821计算机学科专业基础综合[专业硕士]之数据结构考研冲刺密押题

  摘要

一、填空题

1. 用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是_____和_____;若只设尾指针,则出队和入队的时间复杂度分别是_____和_____。

【答案】

【解析】队列的出队操作即删除队头的元素,队列的入队操作即在队尾添加元素,循环链表只设头指针,出队时,只要把头结点的下一个结点删除就好了,入队时,要把新的结点插入队尾,必须把队列遍历,找到队尾指针,才能插入。循环队列只设尾指针,出队时只要把为指针的下一个结点或者下下个结点删除即可,入队时,只要在尾指针的后面插入新的结点,并更新尾结点即可。

2. 下面程序的功能是用递归算法将一个整数按逆序存放到一个字符数组中。如123存放成321。请填空:

【答案】

【解析】通过递归算法,首先找到最高位的值,将其放到str 对应的数组中,依次反向获取从高位到地位的值,将其放到数组中,完成了将整数逆序放到一个字符数组中。

3. 阅读下列程序说明和裎序,填充程序中的_____。

【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示(编科略)本程序采用非递归的方法,设立一个堆栈交换左、右子树的算法为:

第 2 页,共 70 页

存放还没有转换过的结点,它的栈顶指针为。

(1)把根结点放入堆栈。

(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。(3)重复(2)直到堆栈为空时为止。

(1)

{(2)

If ( (3) )

} }} 【答案】

【解析】本题主要使用堆栈完成了二叉树左右子树交换的操作。首先根结点进栈,然后判断栈足否为空,如果不为空,则取栈顶元素,交换取出节点的左右指针。并将左右指针分别进桟,重复这一操作。完成二叉树左右孩子的交换。

4. 根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成_____和_____; 而又根据指针的连接方式,链表又可分成_____和_____。

【答案】单链表;双链表;(动态)链表;静态链表

【解析】线性表的链式存储结构根据每个结点包含的指针个数分为单链表和双链表,单链表只包含一个指针,指向后续元素,双链表包括两个指针,指向前一个元素和后续元素。根据指针的连接方式,链表可分为动态链表和静态链表。静态链表的指针指向下一个元素的编号,动态链表的指针指向下一个元素的物理位置。

5. 索引顺序文件既可以顺序存取,也可以_____存取。

【答案】随机

6. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称 增量序列)依次是4,2,1则排序需_____趟,写出第一趟结束后,数组中数据的排列次序_____。

【答案】3; (10,7,-9,0,47,23,1,8,98,36)

7. 阅读下列程序,指出其功能,并写出空格处应填上的语句。

第 3 页,共 70 页

的元素,如该元素已在哈希表中,报告出错。

【答案】

【解析】本题是在哈希表ht[]中插入值为

8. 数组的存储结构采用_____存储方式。

【答案】顺序存储结构

【解析】数组本身的存储结构是线性的,也就是说它是连续存储的。

9. 设数组数组中任一元素均占内存48个二进制位,从首地址2000开始连续存放在主内存里,主内存字长为16位,那么

(1)存放该数组至少需要的单元数是_____;

(2)存放数组的第8列的所有元素至少需要的单元数_____; (3)数组按列存储时,元素【答案】270; 27; 2204 【解析】数组的元素个数为需要

第8列有9个元素,共占个单元。按列存储时,

10.

【答案】5

因为每个元素占内存48个二进制位,即6个字节。故总

个单元数。

个字节,因此至少需要的起始地址为

=_____

个单元数。由题知,每个元素占3

个字节,因为主内存字长为16位,即2个字节,所以至少需要

的起始地址是_____。

二、选择题

11.若对n 阶对称矩阵A 以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组

中,则在B 中确定

的位置k 的关系为( )。

【答案】B

【解析】将n 阶对称矩阵存人一维数组中,一维数组的大小需为

中,当

时,i 与k 的关系为

对n 阶对称矩阵

A

以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组

第 4 页,共 70 页