2017年天津财经大学计算机系统结构818计算机专业综合之数据结构考研强化模拟题
● 摘要
一、填空题
1. 克鲁斯卡尔算法的时间复杂度为_____,它对_____图较为适合。
【答案】O (eloge ); 边稀疏
2. 高度为h 的堆中,最多有_____元素,最少有_____个元素。
【答案】
当最后一层只有
则后缀式
的
【解析】当这个堆构成的是满二叉树时,元素的个数最多,
元素个数为一个元素时,此时堆的元素个数最少,元素个数为
3. 中缀式对应的前缀式为_____,若运算结果为_____。
【答案】
【解析】中缀式相当于中序遍历,前缀式相当于前序遍历,后缀式相当于后序遍历。
4. 用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是_____和_____;若只设尾指针,则出队和入队的时间复杂度分别是_____和_____。
【答案】
【解析】队列的出队操作即删除队头的元素,队列的入队操作即在队尾添加元素,循环链表只设头指针,出队时,只要把头结点的下一个结点删除就好了,入队时,要把新的结点插入队尾,必须把队列遍历,找到队尾指针,才能插入。循环队列只设尾指针,出队时只要把为指针的下一个结点或者下下个结点删除即可,入队时,只要在尾指针的后面插入新的结点,并更新尾结点即可。
5. 当广义表中的每个元素都是原子时,广义表便成了_____。
【答案】线性表
【解析】如果每个元素都是原子,则元素不可分。此时的元素是只有一对一的关系,所以广义表变成了线性表。
6. 有五个数据依次入栈:1,2, 3, 4, 5。在各种出栈的序列中,以3, 4先出栈的序列有_____。(3在4之前出栈)
【答案】3个
【解析】以3, 4先出栈的序列有34521、34215、34251共3个。
7. 设T 是一棵结点值为整数的二叉排序树,A 是一个任意给定的整数。free_tree在下面的算法中,(T )在对二叉排序树丁进行后序遍历时释放二又排序树T 的所有结点;
首
先在二叉排序树T 中查找值为A 的结点,根据查找情况分别进行如下处理:(1)若找不到值为A 的结点,则返回根结点的地址(2)若找到值为A 的结点,则删除以此结点为根的子树,并释放此子树中的所有结点,若值为A 的结点是查找树的根结点,删除后变成空的二叉树,则返否则返回根结点的地址。
【答案】
8. 一个有2001个结点的完全二叉树的高度是_____。
【答案】11
【解析】完全二叉树的高度
9. 检索是为了在文件中寻找满足一定条件的记录而设置的操作。检索可以按_____检索。也可以按_____检索;按_____检索又可以有_____检索和_____检索。
【答案】关键字;记录号;记录号;顺序;直接
10.阅读下列程序说明和裎序,填充程序中的_____。
【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示(编科略)本程序采用非递归的方法,设立一个堆栈交换左、右子树的算法为:
(1)把根结点放入堆栈。
(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。(3)重复(2)直到堆栈为空时为止。
存放还没有转换过的结点,它的栈顶指针为
。
(1)
{(2)
If ( (3) )
} }}
【答案】
【解析】本题主要使用堆栈完成了二叉树左右子树交换的操作。首先根结点进栈,然后判断栈足否为空,如果不为空,则取栈顶元素,交换取出节点的左右指针。并将左右指针分别进桟,重复这一操作。完成二叉树左右孩子的交换。
二、选择题
11.已知字符串S 为“abaabaabacacaabaabcc ”,模式串t 为“abaabc ”,采用KMP 算法进行匹配,第一次出现“失配” (
A.i=l,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=2
【答案】C
【解析】模式匹配(KMP )算法对普通的暴力匹配的改进在于:每当匹配过程中匹配失败时,主串(本题为S )的指针(i )不需要回溯,而是利用已经得到的“部分匹配”的结果将模式串(t )向右“滑动”尽可能远的一段距离后,继续进行比较。模式串“滑动”的距离是由模式串(t )本身决定的,即t
的子串
中前缀串和后缀串相等的最长长度。本题中第一次失配i=5, 字串为
“abaab”,其相等且最长的前后缀为“ab”,一次下一个j = 2。
12.在下面的排序方法中,辅助空间为的是( )。
A. 希尔排序 B. 堆排序 C. 选择排序 D. 归并排序 【答案】D
13.输入序列为ABC ,可以变为CBA 时,经过的栈操作为( )。
【答案】B
【解析】根据输入序列和输出序列可知,输入序列全部进栈,然后再出栈。从中可以看出,push 的数目始终大于等于pop 的数目。
,i=j = 5,则下次开始匹配时,i 和j 的值分别是( ))。
相关内容
相关标签