数据结构复习思考题.docx
《数据结构复习思考题.docx》由会员分享,可在线阅读,更多相关《数据结构复习思考题.docx(14页珍藏版)》请在冰豆网上搜索。
数据结构复习思考题
《数据结构》复习思考题
一、基础题
题目
答案
数据结构研究的主要内容是:
非数值计算程序设计中数据的(①)和(②)以及它们之间(③)方法。
①A.操作对象B.计算方法C.逻辑结构D.数据映像
②A.计算方法B.数据映像C.分类方法D.存储结构
③A.链接与关系B.关系与算法C.数据映像D.计算方法
①C
②D
③B
一棵含18个结点的二叉树的高度至少为()
A.3B.4C.5D.6
C
算法分析的主要目的是对(①)和(②)两个方面进行评价。
①A.数据存储的合理性B.算法选择的简单性
C.算法的空间复杂度D.算法过程的逻辑性
②A.算法的时间复杂度B.算法选择的简单性
C.算法的空间复杂度D.算法的正确性与简单性
①C
②A
具有频繁插入删除操作的线性表,应采用()存储结构效率较高。
A.矩阵B.链表C.数组D.结构
B
无向图中一个顶点的度是指图中()
A.通过该顶点的简单路径数B.与该顶点相邻接的顶点数
C.通过该顶点的回路数D.与该顶点连通的顶点数
B
下列程序段的时间复杂度数量级为__________。
k=1;
while(k<=n)
{k=k*3;}
O(log3n)
从算法设计的简单性、时间复杂性和空间复杂性等多种角度考虑,你认为实现图深度优先遍历过程的控制,采用()作为算法辅助存储结构最合适。
A.队列B.堆栈C.单向环形链表D.双向循环链表
B
一个栈的数据入栈顺序为:
ABCDE,指出不可能的出栈序列为()。
A.EDCBAB.DECBAC.DCEABD.ABCDE
C
head为无头结点单向向后链表,判断head为空表的判定条件是()
A.head==NULLB.head=0
C.head-→data==0D.head→next==NULL
A
循环队列定义为:
intA[m];使用A[0]至A[m-1]作为数据存储区,已知头尾指针分别为front和rear,表明队列中有效数据元素总数(一个正整数)的表达式是()。
A.(rear-front+m)%mB.rear–front+1
C.rear–front-1D.(rear–front)%m
A
带头结点的单链表head为空表的判定条件是()。
A.head->next!
=NULLB.head!
=NULLC.head->next==NULLD.head==NULL
C
一堆栈数据进栈的次序为:
1,2,3,4,5确定下述结果中错误的是()。
A.5,4,3,2,1B.1,2,3,4,5C.2,3,1,5,4D.3,1,2,4,5
D
根据数据元素的关键字能够直接确定记录素存储地址的方法称为()。
A.链接存储方法B.顺序存储方法
C.散列存储方法D.索引存储方法
C
算法分析的目的是()。
A.辨别数据结构的合理性B.评价算法的效率
C.研究算法中输入与输出的关系D.鉴别算法的可读性
B
在线性表的下列运算中,不改变数据元素之间结构关系的运算是()。
A.插入B.删除C.排序D.定位
D
在按层次遍历二叉树的算法中,借助()辅助数据结构比较合适。
A.队列B.栈
C.线性表D.有序表
A
在下列排序方法中,平均时间性能为O(nlogn)且空间性能最好的是()
A.快速排序B.堆排序C.归并排序D.基数排序
B
若用数组s[0..n-1]作为两个栈s1和s2的共用存储空间,且仅当s[0..n-1]全满时,各栈才不能进行进栈操作。
为这两个栈选择空间利用的最佳方案,问s1和s2栈顶指针的初值分别为()能更好地利用提供的存储空间?
A.1和n+1B.1和n/2
C.-1和nD.-1和n+1
C
如果求一个连通图中以某个顶点为根的高度最小的生成树,应采用()。
A.深度优先搜索算法B.广度优先搜索算法
C.求最小生成树的prim算法D.拓扑排序算法
B
栈和队列都是()。
A.限制存取位置的线性结构B.顺序存储的线性结构
C.链式存储的线性结构D.限制存取位置的非线性结构
A
若用邻接矩阵表示一个有向图,则其中每一列包含的″1″的个数为()。
A.图中每个顶点的入度B.图中每个顶点的出度
C.图中弧的条数D.图中连通分量的数目
B
在一个带权连通图G中,权值最小的边一定包含在G的()中。
A.最小生成树B.深度优先遍历树
C.广度优先遍历树D.深度优先生成森林
A
如果在排序过程中,每次均将一个待排序的记录按关键字大小加入到前面已经有序的子表中的适当位置,则该排序方法称为()。
A.插入排序B.归并排序
C.冒泡排序D.堆排序
A
二、操作题
题目
答案
对给定字符集和相应权重,构造Huffman树并确定每个字符的Huffman编码,给出huffman树的带权路径长度。
节点
E
T
A
D
U
权重
10
12
7
9
4
答案:
树的逻辑结构:
编码:
U:
000(3位)
D:
001(3位)
e:
01(2位)
a:
11(2位)
t:
10(2位)
树的带权路径长度:
97
给定数据序列:
6,3,9,5,7,8,2,1,4,12,按要求完成下列题目。
(1)构造排序二叉树,画出排序二叉树的逻辑结构;
(2)给出该二叉树先序、中序和后序遍历的节点序列。
答案:
(1)二叉树的逻辑结构
(2)遍历结果
先序:
6-3-2-1-5-4-9-7-8-12
中序:
1-2-3-4-5-6-7-8-9-12
后序:
1-2-4-5-3-8-7-12-9-6
(3)选作题参考答案
应用左子树右下角节点替换
应用右子树左下角节点替换
对指定的二叉树,写出二叉树顺序存储方式的节点顺序(包括空位)、先根遍历的节点顺序、中根遍历的节点顺序、后根遍历的节点顺序。
节点顺序存储的节点顺序
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
先序:
中序:
后序:
答案:
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
G
10
11
12
13
14
15
16
17
18
19
H
I
J
先序:
ABDEGHCFIJ
中序:
DBGEHACIFJ
后序:
DGHEBIJFCA
对给定的图,按要求完成下列题目。
(1)写出图的邻接矩阵,邻接表;
(2)写出从节点V6出发深度优先与广度优先遍历的节点序列。
答案:
(1)邻接矩阵:
结点
1
2
3
4
5
6
1
10
25
2
2
3
3
4
8
4
5
6
4
7
5
邻接表:
出边
结点
1
2
3
6
2
3
3
^
4
3
6
5
^
6
1
4
5
入边
结点
1
6
2
1
3
1
2
4
4
6
5
6
6
1
4
(2)遍历结果:
深度优先:
v6—v1—v2—v3—v4—v5
广度优先:
v6—v1—v4—v5—v2—v3
对下列无向连通图给出图最小生成树的逻辑结构;给出求解的操作过程,说明所依据的算法(克鲁斯卡尔,普利姆?
)
最小生成树:
(结果的形式不唯一)
判断下列数据是否是堆?
说明判断方法?
数据如下:
5,23,16,68,94,72,71,73,
答案:
是小根堆,
按二叉树顺序存储结构确定堆的逻辑结果,并判断:
对下列无向连通图给出图最小生成树的逻辑结构,并写出从V1到其它各点最短路径的构成与路径长度。
答案:
(1)最小生成树:
(2)最短路径
v1-v2:
3
v1-v3:
5
v1-v4:
4
v1-v5:
51-4-5
v1-v6:
4
对给定的数据序列{19,01,23,14,55,20,84,27,68,11,10,77},应用指定Hash函数和冲突解决方法,写出数据序列的最终存储结果。
Hash(key)=key%13
应用线性探测再散列方法解决冲突,在0-13地址空间内散列存储数据序列中数据
0
1
2
3
4
5
6
7
8
9
10
11
12
13
答案:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
1
14
55
27
68
19
20
84
23
11
10
77
对指定的图,写出所有可能的拓扑序列。
答案:
2—1—3—4—6—5
已知带权图的邻接表如下所示,按要求完成下列题目。
(1)给出该图的逻辑结构;
(2)给出该图从V0出发深度优先遍历和广度优先遍历结果;
(3)写出从顶点V0到其它各顶点的最短路径。
0
1
2
3
4
5
0
∞
12
10
∞
30
100
1
∞
∞
∞
∞
∞
∞
2
∞
∞
∞
50
∞
∞
3
∞
∞
∞
∞
∞
10
4
∞
∞
∞
20
∞
60
5
∞
∞
∞
∞
∞
∞
答案:
深度优先遍历:
V0—V1—V2—V3—V5—V4
广度优先遍历:
V0—V1—V2—V4—V5—V3
单源最短路径:
V0
V1
V0—V1:
12
V2
V0—V2:
10
V3
V0—V4—V3:
50
V4
V0—V4:
30
V5
V0—V4—V3—V5:
60
已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为[0..6],假定选用的散列函数是H(K)=Kmod7,若发生冲突采用线性探查法处理,按要求完成下列题目。
(1)计算出每一个元素的散列地址并在下图中填写出散列表;
0123456
(2)求出在查找每一个元素概率相等情况下的平均查找长度。
(提示根据各个关键字的散列操作次数计算平均定位查找次数)。
答案:
(1)散列结果:
0123456
63
36
15
22
40
计算过程:
1)H(36)=36mod7=1;
2)H(15)=15mod7=1;