数据元素是数据的最小单位。
F
数据的逻辑结构是指数据的各数据项之间的逻辑关系。
F
数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。
T
数据元素可以由类型互不相同的数据项构成。
T
数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构。
F
2N和NN具有相同的增长速度。
F
算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
T
n! is O(n n ).
T
O(N2) is the same as O(1 + 2 + 3 + ? +N).
T
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。
T
对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。
T
对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。
F
(neuDS)在顺序表中逻辑上相邻的元素,其对应的物理位置也是相邻的。
T
(neuDS)所谓随机存取,就是通过首地址和元素的位序号值可以在O(1)的时间内找到指定的元素。
T
(neuDS)顺序存储的线性表不支持随机存取。
F
(neuDS)在顺序表上进行插入、删除操作时需要移动元素的个数与待插入或待删除元素的位置无关。
F
(neuDS)顺序存储方式只能用于存储线性结构。
F
在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。
F
若用链表来表示一个线性表,则表中元素的地址一定是连续的。
F
将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)。
F
二叉树通常有顺序存储结构和链式存储结构。
T
在含有n个结点的树中,边数只能是n - 1条。
T
完全二叉树中,若一个结点没有左孩子,则它必是树叶。
T
一棵有n个结点的二叉树,从上至下,从左到右用自然数依次编号,则编号为i的结点的左儿子的编号为2i(2i < n),
右儿子的编号是2i + 1(2i + 1 < n)。
F
用树的前序遍历和中序遍历可以导出树的后序遍历。
F
二叉树只能用二叉链表表示。
F
树形结构中元素之间存在一个对多个的关系。
T
度为二的树就是二叉树。
F
某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。
T
某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。
F
一棵有124个结点的完全二叉树,其叶结点个数是确定的。
T
任何二叉搜索树中同一层的结点从左到右是有序的(从小到大)。
T
二叉搜索树的查找和折半查找的时间复杂度相同。
F
二叉排序树的后序遍历序列必然是递增的。
F
若一搜索树(查找树)是一个有n个结点的完全二叉树,则该树的最大值一定在叶结点上
F
N个结点的二叉排序树有多种,其中树高最小的二叉排序树是最佳的。
T
中根遍历二叉查找树所得序列一定是有序序列。
T
二叉排序树的查找效率和二叉排序树的 ? {度有关。
T
在二叉排序树中,每个结点的关键字都比左孩子关键字大,比右孩子关键字小。
T
任何最小堆的前序遍历结果是有序的(从小到大)。
F
任何最小堆中从根结点到任一叶结点路径上的所有结点是有序的(从小到大)。
T
对N(≥2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一定不小于下一层任一结点的权值。
T
哈夫曼编码是一种最优的前缀码。对一个给定的字符集及其字符频率,其哈夫曼编码不一定是唯一的,但是每个字符的哈夫曼码的长度一定是唯一的。
F
哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。
F
无向连通图所有顶点的度之和为偶数。
T
无向连通图边数一定大于顶点个数减1。
F
用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。
F
用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。
T
在一个有向图中,所有顶点的入度与出度之和等于所有边之和的2倍。
T
在任一有向图中,所有顶点的入度之和等于所有顶点的出度之和。
T
图的深度优先遍历非递归算法通常采用队列实现,广度优先遍历非递归算法通常采用堆栈实现。
F
如果无向图G必须进行两次广度优先搜索才能访问其所有顶点,则G中一定有回路。
F
采用邻接表存储的图,其广度优先遍历类似于二叉树的先序遍历。
F
若有向图不存在回路,即使不用访问标志位同一结点也不会被访问两次。
F
Kruskal 算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树。
F
Prim 算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树。
T
对于带权无向图 G = (V, E),M 是 G 的最小生成树,则 M 中任意两点 V1 到 V2 的路径一定是它们之间的最短路径。
F
如果 e 是有权无向图 G 唯一的一条最短边,那么边 e 一定会在该图的最小生成树上。
T
m阶B树的根结点最多有m棵子树。
T
斜堆是用二叉树来实现的一种堆结构。斜堆的优势在于比平衡二叉树有更快的归并能力。其归并、插入、删除最小元操作的最坏时间复杂度都是O(N),而这些操作的摊还时间复杂度都是O(logN)。
T
外排序中,给定 1000 个段和 8 条磁带。如果使用简单的 k 路归并,则最少要执行 5 趟(段的生成不算在内)。
T
仅基于比较的算法能得到的最好的“最坏时间复杂度”是O(NlogN)。
T
若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。
F
1 - 198
若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。
F
1 - 211
在一棵二叉搜索树上查找63,序列39、101、25、80、70、59、63是一种可能的查找时的结点值比较序列。
F
1 - 213
在散列表中,所谓同义词就是具有相同散列地址的两个元素。
T
1 - 215
在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。
F
1 - 217
采用平方探测冲突解决策略(h
i
?
(k) = (H(k) + i
2
) % 11, 注意:不是±i
2
),将一批散列值均等于2的对象连续插入一个大小为11的散列表中,那么第4个对象一定位于下标为0的位置。
(3分)
T
若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。
F
1 - 221
将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M / S。
T
1 - 229
任何AVL树的中序遍历结果是有序的(从小到大)。
T
对N个记录进行归并排序,归并趟数的数量级是O(NlogN)。
(
F
1 - 238
对N个记录进行堆排序,需要的额外空间为O(N)。
(1
F
1 - 242
对N个记录进行简单选择排序,比较次数和移动次数分别为O(N
2
)和O(N)。
(1分)
T
1 - 244
对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(NlogN)。
F
1 - 246
希尔排序是稳定的算法。
(
F
1 - 248
对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。
(1
F
1 - 252
某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。
(2分)
T
1 - 255
某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。
(
F
1 - 14
若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j ? i ? 1。
(2
F
1 - 15
已知一棵二叉树的先序遍历结果是ABC, 则CAB不可能是中序遍历结果。
(2分)
T
将1、2、3、4、5、6顺序插入初始为空的AVL树中,当完成这6个元素的插入后,该AVL树的先序遍历结果是:4、2、1、3、5、6。
(3分)
T
在数据结构中,从逻辑上可以把数据结构分成( )。
C.
线性结构和非线性结构
2 - 2
与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。
(1分)
C.
逻辑结构
2 - 3
通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( )。
(1分)
B.
不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
2 - 4
以下说法正确的是( )。
(1分)
D.
一些表面上很不相同的数据可以有相同的逻辑结构
2 - 5
下列哪个函数是O(N)的?
(2分)
B.
logN
2
2 - 6
算法的时间复杂度取决于( )。
(1分)
A.
问题的规模
B.
待处理数据的初态
D.
A和B
2 - 7
下面代码段的时间复杂度是()。
s = 0;
for ( i = 0; i < n; i++ )
for ( j = 0; j < n; j++ )
s += B[i][j];
sum = s;
(2分)
D.
O(n
2
)
2 - 8
给定N×N×N的三维数组A,则在不改变数组的前提下,查找最小元素的时间复杂度是:
(2分)
D.
O(N
3
)
2 - 25
下列代码
if ( A > B ) {
for ( i = 0; i < N; i++ )
for ( j = N * N; j > i; j-- )
A += B;
} else {
for ( i = 0; i < N * 2; i++ )
for ( j = N * 2; j > i; j-- )
A += B;
}
的时间复杂度是:
(2分)
C.
O(N
3
)
2 - 30
以下数据结构中,( )是非线性数据结构。
(1分)
A.
树
2 - 32
数组A[1..5, 1..6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5, 5]的地址为:
(2分)
C.
1140
2 - 34
在N个结点的顺序表中,算法的时间复杂度为O(1)的操作是:
(2分)
A.
访问第i个结点(1≤i≤N)和求第i个结点的直接前驱(2≤i≤N)
2 - 36
以下关于顺序表的说法中,正确的是( )。
C.
顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问
2 - 38
线性表若采用链式存储结构时,要求内存中可用存储单元的地址
(1分)
B.
连续或不连续都可以
2 - 40
线性表L在什么情况下适用于使用链式结构实现?
(1分)
A.
需不断对L进行删除插入
2 - 42
链表不具有的特点是:
(1分)
B.
方便随机访问任一元素
适用于压缩存储稀疏矩阵的两种存储结构是:
(1分)
A.
三元组表和十字链表
2 - 10
在具有N个结点的单链表中,实现下列哪个操作,其算法的时间复杂度是O(N)?
(2分)
C.
遍历链表和求链表的第i个结点
2 - 11
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?
(2分)
B.
仅有尾指针的单循环链表
2 - 12
若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用哪种存储方式最节省运算时间?
(2分)
D.
带头结点的双循环链表
2 - 13
将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?
(2分)
C.
带尾指针的单循环链表
2 - 14
对于一个具有N个结点的单链表,在给定值为x的结点后插入一个新结点的时间复杂度为
(2分)
C.
O(N)
2 - 15
设h为不带头结点的单向链表。在h的头上插入一个新结点t的语句是:
(2分)
D.
t->next = h; h = t;
2 - 16
在单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行
(2分)
C.
s->next = p->next; p->next = s;
2 - 17
带头结点的单链表h为空的判定条件是:
(2分)
B.
h->next == NULL;
2 - 18
已知表头元素为c的单链表在内存中的存储状态如下表所示:
现将f存放于1014H处,并插入到单链表中,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次
是:
(2分)
D.
1014H, 1004H, 1010H
2 - 60
树最适合于用来表示
(1分)
D.
元素之间具有分支层次关系的数据
2 - 63
深度为6的二叉树最多有( )个结点。
(2分)
B.
63
若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( )个。
(2分)
B.
11
2 - 67
一个具有1025个结点的二叉树的高h为( )个。
(2分)
C.
11至1025之间
2 - 69
具有9个叶结点的二叉树中有____个度为2的结点。
(2分)
A.
8
2 - 71
度为3的树中第4层上至多有( )个结点。
(2分)
C.
27
2 - 73
在下列存储形式中,( )不是树的存储形式。
(2分)
D.
顺序存储表示法
2 - 75
假设一棵二叉树的结点个数为50,则它的最小高度是( )。
(2分)
C.
6
2 - 77
以下说法错误的是 ( )
(2分)
A.
树形结构的特点是一个结点可以有多个直接前趋
2 - 79
由3 个结点可以构造出多少种不同的二叉树( )
(2分)
D.
5
2 - 81
中序遍历图示二叉树的结果为 :
QQ20190528 - 161956@2x.png
(2分)
C.
H,D,I,B,E,A,F,C,G
2 - 82
已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac, 它的前序遍历是( )。
(2分)
D.
cedba
2 - 83
在二叉树的二叉链表结构中,指针p所指结点为叶子结点的条件是( )。
(2分)
B.
p->lchild == NULL &&p->rchlid == NULL
2 - 84
二叉树的先序序列和中序序列相同的条件是( )。
(2分)
B.
任何结点至多只有右子女的二叉树
2 - 85
一棵二叉树中有7个度为2的结点和5个度为1的结点,其总共有( )个结点。
(2分)
C.
20
用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为( )
(2分)
C.
n + l
2 - 87
如果二叉树的前序遍历结果是12345,后序遍历结果是32541,那么该二叉树的中序遍历结果是什么?
(2分)
D.
无法确定
下面的函数PreOrderPrintLeaves(BinTree BT)按前序遍历的顺序打印出二叉树BT的所有叶子结点。则下列哪条表达式应被填在空中?
void PreOrderPrintLeaves( BinTree BT ) {
if (BT) {
if (___________________)
printf(" %d", BT->Data);
PreOrderPrintLeaves( BT->Left );
PreOrderPrintLeaves( BT->Right );
}
}
(2分)
D.
!(BT->Left || BT->Right)
2 - 19
完全二叉树的叶子结点数
一棵有 1001 个结点的完全二叉树,其叶子结点数为 ▁▁▁▁▁ 。
(1分)
D.
501
2 - 20
已知二叉树树形如下 无标题.png ,其后序遍历序列为e, a, c, b, d, g, f,在二叉树中与d同层次的结点是( )。
(2分)
B.
a
2 - 94
对二叉搜索树进行什么遍历可以得到从小到大的排序序列?
(1分)
C.
中序遍历
2 - 97
若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是:
(1分)
B.
最大值一定在最后一层
2 - 100
若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?
(3分)
D.
2是5的父结点
2 - 102
将{ 6, 9, 12, 3, 4, 8 }依次插入初始为空的二叉搜索树。则该树的后序遍历结果是:
D.
4, 3, 8, 12, 9, 6
2 - 104
将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉搜索树。则该树的前序遍历结果是:
D.
32, 2, 15, 10, 28, 65
2 - 106
将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉排序树,则该树的后序遍历结果是。
(2分)
C.
10, 28, 15, 2, 65, 32
2 - 108
将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉排序树,则该树的前序遍历结果是。
(2分)
D.
32, 2, 15, 10, 28, 65
2 - 110
已知由(60, 30, 56, 78, 12, 45)序列构成的二叉排序树,其不成功查找的平均查找长度为( )。
(2分)
A.
21 / 7
2 - 111
已知一棵由1、2、3、4、5、6、7共7个结点组成的二叉搜索树(查找树),其结构如图所示,问:根结点是什么?
QQ20190620 - 210329@2x.png
(2分)
C.
5
2 - 114
堆的形状是一棵:
D.
完全二叉树
2 - 116
创建一个初始堆,含有N个记录,其时间复杂度是:
(1分)
B.
O(N)
2 - 117
哪种树,树中任何结点到根结点路径上的各结点值是有序的?
(1分)
C.
堆
2 - 118
将6、4、3、5、8、9顺序插入初始为空的最大堆(大根堆)中,那么插入完成后堆顶的元素为:
(2分)
D.
9
2 - 119
下列的序列中,哪一组是堆?
(2分)
C.
99, 66, 45, 33, 37, 10, 22, 13
2 - 120
将数字 {10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7, 4, 11, 13, 2} 逐一插入一个初始为空的最小堆(小顶堆),得到的堆序列为:
(2分)
D.
1, 3, 2, 6, 7, 5, 4, 15, 14, 12, 9, 10, 11, 13, 8
2 - 121
用线性时间复杂度的算法将给定序列{ 28, 12, 5, 8, 19, 20, 15, 22 }调整为最大堆(大根堆),然后插入30。则结果序列为:
(3分)
D.
{ 30, 28, 20, 22, 19, 5, 15, 8, 12 }
2 - 122
在下述结论中,正确的是:
① 只有2个结点的树的度为1;
② 二叉树的度为2;
③ 二叉树的左右子树可任意交换;
④ 在最大堆(大顶堆)中,从根到任意其它结点的路径上的键值一定是按非递增有序排列的。
(2分)
A.
①④
2 - 123
将 { 10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7 } 逐个按顺序插入到初始为空的最小堆中,然后连续执行两次删除最小元素操作(DeleteMin),再插入4,16,此后堆顶的元素是什么?
(2分)
A.
4
2 - 124
利用过滤法将关键字序列 { 37, 66, 48, 29, 31, 75 } 建成的最大堆为 __
(2分)
C.
75, 66, 48, 29, 31, 37
2 - 125
下列关于大根堆(至少含 2 个元素)的叙述中,正确的是:
(I). 可以将堆看成一棵完全二叉树
(II). 可以采用顺序存储方式保存堆
(III). 可以将堆看成一棵二叉排序树
(IV). 堆中的次大值一定在根的下一层
(2分)
C.
仅 I、II、IV
2 - 21
将关键字 6、9、1、5、8、4、7 依次插入到初始为空的大根堆 H 中,得到的 H 是:
(2分)
B.
9、8、7、5、6、1、4
2 - 22
设一段文本中包含字符{a, b, c, d, e},其出现频率相应为{3, 2, 5, 1, 1}。则经过哈夫曼编码后,文本所占字节数为:
(2分)
C.
25
2 - 23
设一段文本中包含4个对象{a, b, c, d},其出现次数相应为{4, 2, 5, 1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?
(2分)
B.
2
2 - 24
设哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。
(2分)
B.
100
2 - 126
已知权值集合为{5,7,2,3,6,1,4},计算带权路径长度WPL()。
(2分)
B.
74
2 - 26
以下对于堆和哈夫曼树的描述,错误的是:
(2分)
B.
堆的任意非叶节点的左右子树(如果非空)互换,仍然是堆。
2 - 27
由权值分别为8,4,6,5,7的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。
(2分)
C.
69
2 - 28
下面几个符号串编码集合中,不是前缀编码的是( )。
B.
{11, 10, 001, 101, 0001}
2 - 29
以下说法错误的是 ( )。
(2分)
C.
已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。
2 - 127
设有正文ADDBCBDCCBDCAD, 字符集为A, B, C, D, 设计一套二进制编码,使得上述正文的编码最短。正确的哈夫曼树(要求左孩子权值小于等于右孩子)以及编码是( )。
D - 1.jpgA: 00 B: 01 C: 10 D: 11
2 - 31
若某二叉树有 5 个叶结点,其权值分别为 10、12、16、21、30,则其最小的带权路径长度(WPL)是:
(2分)
B.
200
2 - 140
下列关于无向连通图特征的叙述中,正确的是:
所有顶点的度之和为偶数
边数大于顶点个数减1
至少有一个顶点的度为1
(2分)
A.
只有1
2 - 143
具有5个顶点的有向完全图有多少条弧?
(2分)
C.
20
2 - 146
对于一个具有N个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是:
(1分)
D.
N
2
2 - 148
给定有向图的邻接矩阵如下:
顶点2(编号从0开始)的出度和入度分别是:
(1分)
C.
0, 2
2 - 150
设无向图为 G = (V,E),其中 V = {v1, v2, v3, v4},E = {(v1, v2),(v3, v4),(v4, v1),(v2, v3),(v1, v3)}。则每个顶点的度依次为:
(2分)
C.
3, 2, 3, 2
2 - 156
对于给定的有向图如下,其强连通分量为:
6 - 4.JPG
(2分)
A.
{1}, {2, 3, 4, 6}, {5}
2 - 160
将一个 10×10 的对称矩阵 M 的上三角部分的元素 m
i, j
?
(1≤i≤j≤10)按列优先存入C语言的一维数组 N 中,元素 m
7, 2
?
在 N在中的下标是:
(2分)
C.
22
2 - 161
给定一有向图的邻接表如下。从顶点V1出发按深度优先搜索法进行遍历,则得到的一种顶点序列为:
(2分)
B.
V1, V5, V4, V7, V6, V3, V2
2 - 162
如果从无向图的任一顶点出发进行一次深度优先遍历即可访问所有顶点,则该图一定是____。
(2分)
B.
连通图
2 - 163
用邻接表表示图进行深度优先遍历时,通常借助( )来实现算法。
(2分)
A.
栈
2 - 164
给定无向带权图如下,以下哪个是从顶点 a 出发深度优先搜索遍历该图的顶点序列(多个顶点可以选择时按字母序)?
6 - 7.JPG
(2分)
C.
abcdefgh
2 - 165
给定一个图的邻接矩阵如下,则从V1出发的深度优先遍历序列(DFS,有多种选择时小标号优先)是:
6 - 8.JPG
(2分)
C.
V1, V2, V4, V6, V8, V10, V9, V7, V5, V3
2 - 166
对下图从顶点C出发进行深度优先搜索,哪个是错误的搜索序列?
6 - 15.JPG
(2分)
B.
CDABEHFG
2 - 167
以下算法的功能是()。
void graph1( adjmatrix GA, int i, int n, int *visited) {
int k, j;
Queue q;
cout << i << ‘ ‘;
visited[i] = 1;
InitQueue( q);
EnQueue (q, i);
while ( !EmptyQueue(q) ) {
k = OutQueue (q);
for ( j = 0; j < n; j++) {
if ( GA[k][j] != 0 && GA[k][j] != MaxValue && !visited[j] ) {
cout << j << ‘ ‘;
visited[j] = 1;
EnQueue (q, j);
}
}
}
}
(4分)
B.
从顶点i出发进行广度优先遍历
2 - 168
采用邻接表存储的图的广度优先遍历算法类似于二叉树的____算法。
(2分)
D.
层次遍历
2 - 169
对下图从顶点C出发进行广度优先搜索,哪个是正确的搜索序列?
6 - 15.JPG
(2分)
D.
CBDAEHFG
2 - 170
在图的广度优先遍历算法中用到一个队列,每个顶点最多进队____次。
(2分)
A.
1
2 - 171
任何一个带权无向连通图的最小生成树——
(1分)
C.
有可能不唯一
2 - 172
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:
(2分)
D.
14
2 - 177
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:
(3分)
B.
23
2 - 183
给出如下图所示的具有 7 个结点的网 G,采用Prim算法,从4号结点开始,给出该网的最小生成树。下列哪个选项给出了正确的树结点收集顺序?
6 - 10.JPG
(2分)
D.
4563201
2 - 185
已知无向图 G 如下所示,使用克鲁斯卡尔(Kruskal)算法求图 G 的最小生成树,加入到最小生成树中的边依次是:
GRE20 - 7.JPG
(2分)
A.
(b, f), (b, d), (a, e), (c, e), (b, e)
2 - 189
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:
(3分)
A.
8
2 - 190
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:
(3分)
D.
8
2 - 191
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:
(3分)
C.
8
2 - 192
给定有权无向图如下。关于其最小生成树,下列哪句是对的?
(3分)
A.
最小生成树不唯一,其总权重为23
2 - 193
给定有权无向图如下。关于其最小生成树,下列哪句是对的?
C.
最小生成树不唯一,其总权重为23
2 - 195
用于求最小生成树的Prim算法和Kruskal算法都是基于( )思想设计的算法。
(2分)
C.
贪心算法
2 - 197
以下哪个命题是正确的?
(3分)
D.
以上都不是
2 - 199
对于给定的有权无向图G,下列哪个说法是正确的?
(3分)
A.
G的最小生成树中,任意一对顶点间的路径必是它们在G中的最短路径
B.
设顶点V到W的最短路径为P。若我们将G中每条边的权重都加1,则P一定仍然是V到W的最短路径
C.
单源最短路问题可以用O(∣E∣ + ∣V∣)的时间解决
D.
以上都不对
2 - 200
在一个有权无向图中,如果顶点b到顶点a的最短路径长度是10,顶点c与顶点b之间存在一条长度为3的边。那么下列说法中有几句是正确的?
c与a的最短路径长度就是13
c与a的最短路径长度就是7
c与a的最短路径长度不超过13
c与a的最短路径不小于7
(3分)
B.
2句
2 - 201
若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:
(3分)
C.
count[S] = 1; 对于其他顶点V则令count[V] = 0
2 - 202
数据结构中Dijkstra算法用来解决哪个问题?
(1分)
B.
最短路径
2 - 203
在AOE网中,什么是关键路径?
D.
从第一个事件到最后一个事件的最长路径
2 - 204
若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:
(3分)
A.
count[S] = 1; 对于其他顶点V则令count[V] = 0
nt[V] = 0
2 - 205
若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:
(3分)
D.
count[S] = 1; 对于其他顶点V则令count[V] = 0
2 - 206
使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,依次得到的各最短路径的目标顶点是:
(2分)
B.
5, 2, 3, 6, 4
2 - 208
已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是:
(2分)
B.
5
2 - 210
在散列表中,所谓同义词就是:
(1分)
B.
具有相同散列地址的两个元素
2 - 212
在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:
(1分)
C.
利用哈希(散列)表
2 - 214
对包含N个元素的散列表进行查找,平均查找长度为:
(1分)
D.
不确定
2 - 216
散列冲突可以被描述为:
(1分)
C.
两个有不同键值的元素具有相同的散列地址
2 - 218
设散列表的地址区间为[0, 16],散列函数为H(Key) = Key % 17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:
(2分)
D.
11
2 - 220
采用线性探测法解决冲突时所产生的一系列后继散列地址:
(1分)
C.
可以大于或小于但不等于原散列地址
2 - 222
将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key) = Key % 11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?
(3分)
B.
0.45
2 - 223
给定散列表大小为11,散列函数为H(Key) = Key % 11。采用平方探测法处理冲突:h
i
?
(k) = (H(k)±i
2
) % 11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是:
(2分)
A.
5
2 - 224
给定散列表大小为11,散列函数为H(Key) = Key % 11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问:此时该散列表的平均不成功查找次数是多少?
(2分)
C.
21 / 11
2 - 225
给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X) = X % 10。如果用大小为10的散列表,并且用开放定址法以及一个二次散列函数h
2
?
(X) = 7 ? (X % 7)解决冲突,则输入各项经散列后在表中的下标为:( -1表示相应的插入无法成功)
(2分)
B.
1, 3, 4, 9, 7, 5, -1
2 - 226
设数字 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 在大小为10的散列表中根据散列函数 h(X) = X % 10得到的下标对应为 {1, 3, 4, 9, 5, 0, 2}。那么继续用散列函数 “h(X) = X % 表长”实施再散列并用线性探测法解决冲突后,它们的下标变为:
(3分)
C.
1, 12, 9, 13, 20, 19, 11
2 - 227
在有n(n > 1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示:
k = 0;
while ( k < n 且 A[k] < x ) k = k + 3;
if ( k < n 且 A[k] == x ) 查找成功;
else if ( k - 1 < n 且 A[k - 1] == x ) 查找成功;
else if ( k - 2 < n 且 A[k - 2] == x ) 查找成功;
else 查找失败;
本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:
(2分)
B.
当x接近数组开头处
2 - 230
下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N > 2)
(2分)
B.
插入排序
2 - 235
若数据元素序列{ 11,12,13,7,8,9,23,4,5 }是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是:
(2分)
C.
插入排序
2 - 239
数据序列{ 3,2,4,9,8,11,6,20 }只能是下列哪种排序算法的两趟排序结果?
(2分)
D.
快速排序
2 - 243
对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下: 第一趟排序结果:2,12,16,5,10,88 第二趟排序结果:2,12,5,10,16,88 第三趟排序结果:2,5,10,12,16,88 则采用的排序方法可能是:
(2分)
A.
冒泡排序
2 - 245
就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是:
(1分)
C.
堆排序 < 快速排序 < 归并排序
2 - 247
下面四种排序算法中,稳定的算法是:
(1分)
C.
归并排序
2 - 249
在基于比较的排序算法中,哪种算法的最坏情况下的时间复杂度不高于O(NlogN)?
(1分)
B.
归并排序
2 - 250
对N个不同的数据采用冒泡算法进行从大到小的排序,下面哪种情况下肯定交换元素次数最多?
(1分)
A.
从小到大排好的
2 - 251
下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(NlogN)的是:
(1分)
C.
堆排序
2 - 253
输入10
5
个只有一位数字的整数,可以用O(N)复杂度将其排序的算法是:
(1分)
D.
基数排序
2 - 254
排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置的方法称为:
(1分)
A.
插入排序
2 - 256
有组记录的排序码为{ 46,79,56,38,40,84 },则利用堆排序的方法建立的初始堆为:
(2分)
D.
84,79,56,38,40,46
2 - 257
{ 12,9,11,8,7,4,5,13,23 }是下列哪种方法第二趟排序后的结果?
(2分)
B.
堆排序
2 - 258
对10TB的数据文件进行排序,应使用的方法是:
(1分)
C.
归并排序
HCFADIBEGJ
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
算法所需执行时间的量度称为 时间复杂度
算法所需存储空间的量度称为 空间复杂度
测量算法的运行时间
time.h
clock()
clock()
(t2 - t1) / (double)CLOCKS_PER_SEC
顺序表插入操作
L.elem[j + 1] = L.elem[j]
L.elem[i - 1] = e
顺序表删除操作。
L.elem[j - 1] = L.elem[j]
下列代码的功能是返回带头结点的单链表L的逆转链表。
Old_head->Next = New_head
L->Next = New_head
下列代码的功能是使用Prim算法求出无向图的最小生成树权值总和,请补全。
MinDist
MinV = V
dist[MinV] = 0
dist[W] > Graph->G[MinV][W]
VCount < Graph->Nv
本题要求用冒泡排序将一组整数按增序排序。冒泡排序每次从头到尾扫描待排序列,检查相邻两数的顺序,如果顺序不对就交换。请补全下列冒泡排序的代码。
p->next->value > p->next->next->value
p->next = q->next
q->next = p->next->next
p->next->next = q
下列代码的功能是利用堆排序将N个元素按非递减顺序排序。
child != N - 1 && A[child + 1] > A[child]
Tmp < A[child]
A[i] = Tmp
PercDown( A, 0, i )
本题要求给出希尔排序对给定初始序列{9, 8, 7, 6, 5, 4, 3, 2, 1}利用增量序列{1, 3, 7}进行排序的分步结果。将每步结果填在下列空中。注意:相邻数字间必须有一个空格,开头结尾不得有多余空格。
增量7排序后 2 1 7 6 5 4 3 9 8
增量3排序后 2 1 4 3 5 7 6 9 8