期末的一套模拟题,仅供参考,切莫作为期末考试依据!!!
选择题
-
数组A[1..5,1..6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为:
A.1120
B.1125
C.1140
D.1145
解析:1000 + 4 * 6 * 5 + 5 * 5 = 1145 (每个元素占5个单元) -
对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度为:
A.O(1), O(1)
B.O(1), O(N)
C.O(N), O(1)
D.O(N), O(N)
解析:这里说的增加结点是插入结点 -
在N个结点的顺序表中,算法的时间复杂度为O(1)的操作是:
A.访问第i个结点(1≤i≤N)和求第i个结点的直接前驱(2≤i≤N)
B.在第i个结点后插入一个新结点(1≤i≤N)
C.删除第i个结点(1≤i≤N)
D.将N个结点从小到大排序
-
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间?
A.双链表
B.单循环链表
C.带头结点的双循环链表
D.顺序表
-
线性表若采用链式存储结构时,要求内存中可用存储单元的地址
A.必须是连续的
B.连续或不连续都可以
C.部分地址必须是连续的
D.一定是不连续的
-
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?
A.单链表
B.仅有尾指针的单循环链表
C.仅有头指针的单循环链表
D.双链表
-
若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用哪种存储方式最节省运算时间?
A.单链表
B.双链表
C.单循环链表
D.带头结点的双循环链表
-
将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?
A.单链表
B.单循环链表
C.带尾指针的单循环链表
D.带头结点的双循环链表
-
线性表L在什么情况下适用于使用链式结构实现?
A.需不断对L进行删除插入
B.需经常修改L中的结点值
C.L中含有大量的结点
D.L中结点结构复杂
-
设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是:
A.1
B.2
C.3
D.4
-
假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为:
A.2
B.3
C.4
D.5
-
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?
A.b c a e f d
B.c b d a e f
C.d c e b f a
D.a f e d c b
-
设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?
A.3 2 1 5 4
B.5 1 2 3 4
C.4 5 1 3 2
D.4 3 1 2 5
-
有六个元素以6、5、4、3、2、1的顺序进栈,问哪个不是合法的出栈序列?
A.2 3 4 1 5 6
B.3 4 6 5 2 1
C.5 4 3 6 1 2
D.4 5 3 1 2 6
-
若一个栈的入栈序列为1、2、3、…、N,输出序列的第一个元素是i,则第j个输出元素是:
A.i−j−1
B.i−j
C.j−i−1
D.不确定
-
将5个字母
ooops
按此顺序入栈,则有多少种不同的出栈顺序可以仍然得到ooops
?A.1
B.3
C.5
D.6
-
从栈顶指针为
ST
的链栈中删除一个结点且用X
保存被删结点的值,则执行:A.
X= ST->data;
B.
X= ST; ST = ST->next;
C.
X= ST->data; ST = ST->next;
D.
ST = ST->next; X= ST->data;
-
若栈采用顺序存储方式存储,现两栈共享空间
V[m]
:top[i]
代表第i
(i
=1或2)个栈的栈顶;栈1的底在V[0]
,栈2的底在V[m-1]
,则栈满的条件是:A.
|top[2]-top[1]|==0
B.
top[1]+top[2]==m
C.
top[1]==top[2]
D.
top[1]+1==top[2]
-
若用大小为6的数组来实现循环队列,且当前
front
和rear
的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,front
和rear
的值分别为多少?A.2和0
B.2和2
C.2和4
D.2和6
-
已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:
A.39
B.52
C.111
D.119
解析:结点个数最多的时候,第6层有24个支结点,和8个叶结点。 -
在一个用数组表示的完全二叉树中,如果根结点下标为1,那么下标为17和19这两个结点的最近公共祖先结点在哪里(数组下标)? (注:两个结点的“公共祖先结点”是指同时都是这两个结点祖先的结点)
A.8
B.4
C.2
D.1
-
已知关键字序列(5,8,12,19,28,20,15,22)是最小堆(小根堆),插入关键字3,调整后得到的最小堆是:
A.3,5,12,8,28,20,15,22,19
B.3,5,12,19,20,15,22,8,28
C.3,8,12,5,20,15,22,28,19
D.3,12,5,8,28,20,15,22,19
-
将6、4、3、5、8、9顺序插入初始为空的最大堆(大根堆)中,那么插入完成后堆顶的元素为:
A.3
B.5
C.6
D.9
-
将10、12、1、14、6、5、8、15、3、9、7逐个按顺序插入到初始为空的最小堆(小根堆)中,然后连续执行两次删除最小元素操作(DeleteMin),此后堆顶的元素是什么?
A.5
B.6
C.7
D.9
-
已知图的邻接表如下图所示,则从顶点A出发按广度优先遍历的结果是( )。
A.ABCDEF
B.ABCEFD
C.ABEFCD
D.ABCEDF
-
使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,当顶点2被纳入确定顶点时,顶点1到顶点4的最短路径长度(dist[4])为( )。
A.11
B.14
C.20
D.正无穷
-
下图的拓扑排序序列可能为( )。
A.123456
B.123564
C.135246
D.134256
-
以下叙述正确的是( )。
A.最短路径一定是简单路径
B.Dijkstra算法不适合有回路的带权图求最短路径
C.Dijkstra算法不适合求任意两个顶点的最短路径
D.Floyd算法求两个顶点的最短路径时,pathk-1一定是pathk的子集
-
具有n个顶点的有向图最多有( )条边
A.n(n-1)/2
B.n(n-1)
C.n(n+1)
D.n2
-
以下关于无向图邻接矩阵的说法中,错误的是( )
A.无向图邻接矩阵是对称矩阵,同一条边表示了两次
B.某个顶点的度等于邻接矩阵中该顶点对应行(或列)中1的个数
C.判断两顶点v、u是否为邻接点仅需判断邻接矩阵中的对应元素是否为1
D.某个顶点的度等于邻接矩阵中该顶点对应行与列中1的个数之和
填空题
- 在数据结构中,数据的逻辑结构分为 线性结构 和 非线性结构 。
- 链接存储的特点是利用 指针 来表示数据元素之间的逻辑关系。
- 数据结构由数据的 逻辑结构 、存储结构 和 运算 三部分组成。
- 一个数据结构在计算机中的 映像 称为存储结构。
- 数据结构中评价算法的两个重要指标是 时间复杂度 和 空间复杂度。
- 栈的运算遵循 后进先出 的原则。
- 队列 又称为先进先出的线性表。
- 链接存储的特点是利用 指针 来表示数据元素之间的逻辑关系。
- 基于比较的排序方法,其最好的时间复杂度为 O(nlog2n) 。
- 假设二叉树的存储结构为二叉链表,在具有n个结点的二叉链表中(n>0),左孩子指针域和右孩子指针域的个数为 2n ,空指针域的个数为 n+1 。
- 在含有n个结点的树中,边数只能是 n-1 。
- 为了解决队列的假溢出现象,应采用 循环 队列。
- 图的深度优先搜索(DFS)使用了一种数据结构,这种数据结构是 栈 。
- 时间复杂度为O(nlogn)的排序算法有归并排序、堆排序和 快速 排序。
- 设有一组关键字{9,1,23,14,55,20,84,27},采用哈希函数:H(key)=key mod 7 ,表长为10,用开放地址法的线性探测再散列方法解决冲突。要求:对该关键字序列构造哈希表。计算查找成功,失败的平均查找长度。 依次给出哈希表地址0--9单元的值。14,1,9,23,84,|,55,20,27,|。平均查找长度:ASLsucc = 16/8|2,ASLunsucc = 31/10|3.1.
- 在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要 n 。
- 如果无向完全图
G
中有66条边,则G
的生成树有 11 条边。 (填写半角阿拉伯数字如1234567890
,不要添加空格等其它字符) - 设二维数组a[10][20],每个数组元素占用1个存储单元,若按列优先顺序存放数组元素,a[0][0]的存储地址为200,则a[6][2]的存储地址是多少?226
- 设栈S和队列Q的初始状态均为空,元素{1, 2, 3, 4, 5, 6, 7}依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是{2, 6, 5, 4, 7, 3, 1},则栈S的容量至少是:5
- 已知一棵完全二叉树的第5层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:47
- 若一个二叉树的叶子结点是某子树的中序遍历序列中的最后一个结点,则它必是该子树的 先序 遍历序列中的最后一个结点。
- 若以{4,5,6,7,8}作为叶子结点的权值构造哈夫曼树,则其带权路径长度是 69
-
二叉树的遍历
观察下图所示的二叉树
先序遍历的序列为: FBEHCDAGI
后序遍历的序列为: ECHBAIGDF
中序遍历的序列为: EBHCFADIG
-
普里姆算法
请写出用普里姆算法从顶点A出发生成最小生成树每一步加入的边。
(1) AB
(2) BF
(3) FD
(4) FC
(5) DE
注:顶点 X 到 Y 的无向边简记作:XY 或 YX。
-
请写出用普里姆算法从顶点A出发生成最小生成树每一步加入的边。
####请务必输入大写字母 且 在英文状态下输入。前后不要有空格和其他多余的符号。
####边的表示实例:AB 或 BA,两者都可##1)AE
2)ED
3)DF
4)FB
5)DC
-
顺序队列在实现的时候,通常将数组看成是一个首尾相连的循环队列,这样做的目的是为避免产生 假溢出 现象。
-
哈夫曼编码
某电文由8个字母组成,字母出现的频率如下表所示,请写出字母的哈夫曼编码。
字母 频率 哈夫曼编码 A 7 1010 B 19 00 C 2 10000 D 6 1001 E 32 11 F 3 10001 G 21 01 H 10 1011 电文总长度(WPL)为 261 位。
-
关于顺序查找算法
在下面的线性表中
( 15, 24, 32, 47, 50, 58, 62, 79, 83, 96 )
若采用顺序查找算法,假设各元素的检索概率相同,则平均查找长度为 5.5 。
-
关于二分查找算法
在下面的有序表中
( 15, 24, 32, 47, 50, 58, 62, 79, 83, 96 )
若采用二分查找算法,假设各元素的检索概率相同,则平均查找长度为 2.9 。
-
将 {5, 2, 7, 3, 4, 1, 6} 逐个按顺序插入到初始为空的最小堆(小根堆)中。则该树的后序遍历结果为:5,4,3,7,6,2,1
主观题
-
请对下图的无向带权图:从顶点a开始按普里姆算法求其最小生成树,
(1)写出顶点集
(2)写出边集@ -
若采用以下的图示方式存储二叉树,请:
(1)写出相应的类型定义。
(2)写出基于你的类型定义的二叉树中序遍历算法。
(3)写出调用函数的语句。