数据结构练习答案.docx
《数据结构练习答案.docx》由会员分享,可在线阅读,更多相关《数据结构练习答案.docx(23页珍藏版)》请在冰豆网上搜索。
![数据结构练习答案.docx](https://file1.bdocx.com/fileroot1/2022-11/26/61a93ce8-1145-4f9b-a567-0e0c32ff8944/61a93ce8-1145-4f9b-a567-0e0c32ff89441.gif)
数据结构练习答案
第8章图
一、单项选择题
1.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的入度数之和为(A)。
A.sB.s-1C.s+1D.n
2.在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数之和为(D)。
A.nB.eC.n+eD.2e
3.在一个具有n个顶点的无向完全图中,所含的边数为(C)。
A.nB.n(n-1)C.n(n-1)/2D.n(n+1)/2
4.在一个具有n个顶点的有向完全图中,所含的边数为(B)。
A.nB.n(n-1)C.n(n-1)/2D.n(n+1)/2
5.在一个无向图中,若两顶点之间的路径长度为k,则该路径上的顶点数为(B)。
A.kB.k+1C.k+2D.2k
6.对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为(B)。
A.0B.1C.nD.n+1
7.若一个图中包含有k个连通分量,若要按照深度优先搜索的方法访问所有顶点,则必须调用(A)次深度优先搜索遍历的算法。
A.kB.1C.k-1D.k+1
8.若要把n个顶点连接为一个连通图,则至少需要(C)条边。
A.nB.n+1C.n-1D.2n
9.在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为(D)。
A.nB.n⨯eC.eD.2⨯e
10.在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素个数为(C)。
A.nB.n⨯eC.eD.2⨯e
11.在一个具有n个顶点和e条边的无向图的邻接表中,边结点的个数为(D)。
A.nB.n⨯eC.eD.2⨯e
12.在一个具有n个顶点和e条边的有向图的邻接表中,保存顶点单链表的表头指针向量的大小至少为(A)。
A.nB.2nC.eD.2e
13.在一个无权图的邻接表表示中,每个边结点至少包含(B)域。
A.1B.2C.3D.4
14.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应邻接表中该顶点单链表中的边结点数为(B)。
A.k1B.k2C.k1-k2D.k1+k2
15.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应逆邻接表中该顶点单链表中的边结点数为(C)。
A.k1B.k2C.k1-k2D.k1+k2
16.对于一个无向图,下面(A)说法是正确的。
A.每个顶点的入度等于出度
B.每个顶点的度等于其入度与出度之和
C.每个顶点的入度为0D.每个顶点的出度为0
17.在一个有向图的邻接表中,每个顶点单链表中结点的个数等于该顶点的(A)。
A.出边数B.入边数C.度数D.度数减1
18.若一个图的边集为{(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)},则从顶点A开始对该图进行深度优先搜索,得到的顶点序列可能为(B)。
A.A,B,C,F,D,EB.A,C,F,D,E,B
C.A,B,D,C,F,ED.A,B,D,F,E,C
19.若一个图的边集为{(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)},则从顶点A开始对该图进行广度优先搜索,得到的顶点序列可能为(D)。
A.A,B,C,D,E,FB.A,B,C,F,D,E
C.A,B,D,C,E,FD.A,C,B,F,D,E
20.若一个图的边集为{<1,2>,<1,4>,<2,5>,<3,1>,<3,5>,<4,3>},则从顶点1开始对该图进行深度优先搜索,得到的顶点序列可能为(A)。
A.1,2,5,4,3B.1,2,3,4,5C.1,2,5,3,4D.1,4,3,2,5
21.若一个图的边集为{<1,2>,<1,4>,<2,5>,<3,1>,<3,5>,<4,3>},则从顶点1开始对该图进行广度优先搜索,得到的顶点序列可能为(C)。
A.1,2,3,4,5B.1,2,4,3,5C.1,2,4,5,3D.1,4,2,5,3
22.由一个具有n个顶点的连通图生成的最小生成树中,具有(B)条边。
A.nB.n-1C.n+1D.2⨯n
23.已知一个有向图的边集为{,,,,,},则由该图产生的一种可能的拓扑序列为(A)。
A.a,b,c,d,eB.a,b,d,e,b
C.a,c,b,e,dD.a,c,d,b,e
二、填空题
1.在一个图中,所有顶点的度数之和等于所有边数的2倍。
2.在一个具有n个顶点的无向完全图中,包含有n(n-1)/2条边,在一个具有n个顶点的有向完全图中,包含有n(n-1)条边。
3.假定一个有向图的顶点集为{a,b,c,d,e,f},边集为{,,,,,},则出度为0的顶点个数为2,入度为1的顶点个数为4。
4.在一个具有n个顶点的无向图中,要连通所有顶点则至少需要n-1条边。
5.表示图的三种种存储结构为邻接矩阵、邻接表和邻接多重表。
6.在一个连通图中存在着1个连通分量。
7.图中的一条路径长度为k,该路径所含的顶点数为k+1。
8.若一个图的顶点集为{a,b,c,d,e,f},边集为{(a,b),(a,c),(b,c),(d,e)},则该图含有3个连通分量。
9.对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小至少为n⨯n。
10.对于具有n个顶点和e条边的无向图,在它们对应的邻接表中,所含顶点个数和边结点的个数分别为n和2e。
11.对于具有n个顶点和e条边的有向图,在它们对应的邻接表中,所含顶点个数和边结点的个数分别为n和e。
12.在有向图的邻接表和逆邻接表表示中,每个顶点邻接表分别链接着该顶点的所有出边和入边结点。
13.对于一个具有n个顶点和e条边的无向图,当分别采用邻接矩阵和邻接表表示时,求任一顶点度数的时间复杂度分别为O(n)和O(e)。
14.假定一个图具有n个顶点和e条边,则采用邻接矩阵和邻接表表示时,其相应的空间复杂度分别为O(n2)和O(n+2e)。
15.图的深度优先搜索遍历算法是一种递归算法,图的广度优先搜索遍历算法需要使用队列。
16.对于一个具有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为n和n-1。
17.若一个连通图中每个边上的权值均不同,则得到的最小生成树是唯一(唯一/不唯一)的。
根据图的存储结构进行某种次序的遍历,得到的顶点序列是不唯一(唯一/不唯一)的。
18.假定一个有向图的边集为{,,,,,},对该图进行拓扑排序得到的顶点序列为aebdcf。
三、应用题
1.对于一个无向图,假定采用邻接矩阵表示,试分别写出从顶点0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列。
注:
每一种序列都是唯一的,因为都是在存储结构上得到的。
解答:
深度优先搜索序列:
0,2,3,5,6,1,4
广度优先搜索序列:
0,2,3,5,6,1,4
2.对于一个有向图,假定采用邻接表表示,并且假定每个顶点单链表中的边结点是按出边邻接点序号从大到小的次序链接的,试分别写出从顶点0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列。
注:
每一种序列都是唯一的,因为都是在存储结构上得到的。
解答:
深度优先搜索序列:
0,3,6,4,1,5,2
广度优先搜索序列:
0,3,2,6,5,4,1
3.已知下图所示的一个网,
(1)按照Prim方法,从顶点1出发,求该网的最小生成树的产生过程。
(2)按照Kruskal方法,求该网的最小生成树的产生过程。
解答:
(1)
(2)
4.下图所示为一个有向网图及其带权邻接矩阵,要求对有向图采用Dijkstra算法,求从V0到其余各顶点的最短路径。
解答:
终
点
从v0到各终点的D值和最短路径的求解过程
i=1
i=2
i=3
i=4
i=5
V1
∞
∞
∞
∞
∞
无
V2
10
(v0,v2)
V3
∞
60
(v0,v2,v3)
50
(v0,v4,v3)
V4
30
(v0,v4)
30
(v0,v4)
V5
100
(v0,v5)
100
(v0,v5)
90
(v0,v4,v5)
60
(v0,v4,v3,v5)
Vj
V2
V4
V3
V5
S
{v0,v2}
{v0,v2,v4}
{v0,v2,v3,v4}
{v0,v2,v3,v4,v5}
5.上图给出了一个具有15个活动、11个事件的工程的AOE网,求关键路径。
解答:
①事件的最早发生时间ve[k]:
ve
(1)=0ve
(2)=3ve(3)=4
ve(4)=ve
(2)+2=5
ve(5)=max{ve
(2)+1,ve(3)+3}=7
ve(6)=ve(3)+5=9
ve(7)=max{ve(4)+6,ve(5)+8}=15
ve(8)=ve(5)+4=11
ve(9)=max{ve(8)+10,ve(6)+2}=21
ve(10)=max{ve(8)+4,ve(9)+1}=22
ve(11)=max{ve(7)+7,ve(10)+6}=28
②事件的最迟发生时间vl[k]:
vl(11)=ve(11)=28vl(10)=vl(11)–6=22
vl(9)=vl(10)–1=21
vl(8)=min{vl(10)-4,vl(9)-10}=11
vl(7)=vl(11)–7=21vl(6)=vl(9)–2=19
vl(5)=min{vl(7)-8,vl(8)-4}=7
vl(4)=vl(7)–6=15
vl(3)=min{vl(5)-3,vl(6)-5}=4
vl
(2)=min{vl(4)-2,vl(5)-1}=6
vl
(1)=min{vl
(2)-3,vl(3)-4}=0
③活动ai的最早开始时间e[i]和最晚开始时间l[i]:
活动a1:
e
(1)=ve
(1)=0l
(1)=vl
(2)–3=3
活动a2:
e
(2)=ve
(1)=0l
(2)=vl(3)–4=0
活动a3:
e(3)=ve
(2)=3l(3)=vl(4)–2=13
活动a4:
e(4)=ve
(2)=3l(4)=vl(5)–1=6
活动a5:
e(5)=ve(3)=4l(5)=vl(5)–3=4
活动a6:
e(6)=ve(3)=4l(6)=vl(6)–5=14
活动a7:
e(7)=ve(4)=5l(7)=vl(7)–6=15
活动a8:
e(8)=ve(5)=7l(8)=vl(7)–8=13
活动a9:
e(9)=ve(5)=7l(9)=vl(8)–4=7
活动a10:
e(10)=ve(6)=9
l(10)=vl(9)–2=19
活动a11:
e(11)=ve(7)=15
l(11)=vl(11)–7=21
活动a12:
e(12)=ve(8)=11
l(12)=vl(10)–4=18
活动a13:
e(13)=ve(8)=11
l(13)=vl(9)–10=11
活动a14:
e(14)=ve(9)=21
l(14)=vl(10)-1=21
活动a15:
e(15)=ve(10)=22
l(15)=vl(11)-6=22
④最后,比较e[i]和l[i]的值可判断出a2,a5,a9,a13,a14,a15是关键活动,关键路径如下图所示。
第9章排序
一、单项选择题
1.若对n个元素进行直接插入排序,在进行第i趟排序时,假定元素r[i+1]的插入位置为r[j],则需要移动元素的次数为(D)。
A.j-iB.i-j-1C.i-jD.i-j+1
2.若对n个元素进行直接插入排序,则进行任一趟排序的过程中,为寻找插入位置而需要的时间复杂度为(B)。
A.O
(1)B.O(n)C.O(n2)D.O(log2n)
3.在对n个元素进行直接插入排序的过程中,共需要进行(C)趟。
A.nB.n+1C.n-1D.2n
4.对n个元素进行直接插入排序时间复杂度为(C)。
A.O
(1)B.O(n)C.O(n2)D.O(log2n)
5.在对n个元素进行冒泡排序的过程中,第一趟排序至多需要进行(B)对相邻元素之间的交换。
A.nB.n-1C.n+1D.n/2
6.在对n个元素进行冒泡排序的过程中,最好情况下的时间复杂度为(D)。
A.O
(1)B.O(log2n)C.O(n2)D.O(n)
7.在对n个元素进行快速排序的过程中,第一次划分最多需要移动(D)次元素,包括开始把支点元素移动到临时变量的一次在内。
A.n/2B.n-1C.nD.n+1
8.在对n个元素进行快速排序的过程中,最好情况下需要进行(C)躺。
A.nB.n/2C.log2nD.2n
9.在对n个元素进行快速排序的过程中,最坏情况下需要进行(B)躺。
A.nB.n-1C.n/2D.log2n
10.在对n个元素进行快速排序的过程中,平均情况下的时间复杂度为(D)。
A.O
(1)B.O(log2n)C.O(n2)D.O(nlog2n)
11.在对n个元素进行快速排序的过程中,最坏情况下的时间复杂度为(C)。
A.O
(1)B.O(log2n)C.O(n2)D.O(nlog2n)
12.在对n个元素进行快速排序的过程中,平均情况下的空间复杂度为(D)。
A.O
(1)B.O(log2n)C.O(n2)D.O(nlog2n)
13.在对n个元素进行直接插入排序的过程中,算法的空间复杂度为(A)。
A.O
(1)B.O(log2n)C.O(n2)D.O(nlog2n)
14.对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为(D)。
A.1,3,5,7,9B.9,7,5,3,1
C.5,3,1,7,9D.5,7,9,1,3
15.假定对元素序列(7,3,5,9,1,12,8,15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为(B)。
A.2B.3C.4D.5
16.在对n个元素进行简单选择排序的过程中,需要进行(C)趟选择和交换。
A.nB.n+1C.n-1D.n/2
17.在对n个元素进行堆排序的过程中,时间复杂度为(D)。
A.O
(1)B.O(log2n)C.O(n2)D.O(nlog2n)
18.在对n个元素进行堆排序的过程中,空间复杂度为(A)。
A.O
(1)B.O(log2n)C.O(n2)D.O(nlog2n)
19.假定对元素序列(7,3,5,9,1,12)进行堆排序,采用小根堆,则初始数据构成的初始堆为(B)。
A.1,3,5,7,9,12B.1,3,5,9,7,12
C.1,7,3,5,9,12D.1,3,5,7,9,12
20.假定一个初始堆为(1,5,3,9,12,7,15,10),则进行第一趟堆排序后得到的结果为(A)。
A.3,5,7,9,12,10,15,1
B.3,5,9,7,12,10,15,1
C.3,7,5,9,12,10,15,1
D.3,5,7,12,9,10,15,1
21.若对n个元素进行归并排序,则进行归并的趟数为(D)。
A.nB.n-1C.n/2D.⎡log2n⎤
22.若一个元素序列基本有序,则选用(A)法较快。
A.直接插入排序B.希尔排序
C.堆排序D.快速排序
23.若要对1000个元素排序,要求既快又稳定,则最好采用(B)方法。
A.直接插入排序B.归并排序
C.堆排序D.快速排序
24.若要对1000个元素排序,要求既快又节省存储空间,则最好采用(C)方法。
A.直接插入排序B.归并排序
C.堆排序D.快速排序
25.在平均情况下速度最快的排序方法为(D)。
A.简单选择排序B.归并排序
C.堆排序D.快速排序
二、填空题
1.每次从无序子表中取出一个元素,把它插入到有序子表中的适当位置,此种排序方法叫做直接插入排序;每次从无序子表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做选择排序。
2.每次直接或通过支点元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做快速排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做归并排序。
3.在简单选择排序中,记录比较次数的时间复杂度为O(n2),记录移动次数的时间复杂度为O(n)。
4.对n个记录进行冒泡排序时,最少的比较次数为n-1,最少的趟数为1。
5.快速排序在平均情况下的时间复杂度为O(nlog2n),在最坏情况下的时间复杂度为O(n2)。
6.若对一组记录(46,79,56,38,40,80,35,50,74)进行直接插入排序,当把第8个记录插入到前面已排序的有序表时,为寻找插入位置需比较4次。
7.假定一组记录为(46,79,56,38,40,84),则利用堆排序方法建立的初始小根堆为(38,40,56,79,46,84)。
8.假定一组记录为(46,79,56,38,40,84),在冒泡排序的过程中进行第一趟排序后的结果为(46,56,38,40,79,84)。
9.假定一组记录为(46,79,56,64,38,40,84,43),在冒泡排序的过程中进行第一趟排序时,元素79将最终下沉到其后第4个元素的位置(从0开始)。
10.假定一组记录为(46,79,56,38,40,80),对其进行快速排序的过程中,共需要3趟排序。
11.假定一组记录为(46,79,56,25,76,38,40,80),对其进行快速排序的第一次划分后,右区间内元素的个数为4。
12.假定一组记录为(46,79,56,38,40,80),对其进行快速排序的第一次划分后的结果为[40,38]46[56,79,80]。
13.假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,第二趟归并后的子表个数为3。
14.假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,第三趟归并后的第2个子表为[28,46]。
15.假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,供需要4趟完成。
16.在时间复杂度为O(nlog2n)的所有排序方法中,归并排序方法是稳定的。
17.在时间复杂度为O(n2)的所有排序方法中,直接选择排序方法是不稳定的。
18.在所有排序方法中,快速排序方法采用的是二分法的思想。
19.在所有排序方法中,堆排序方法使数据的组织采用的是完全二叉树的思想。
20.在所有排序方法中,归并排序方法采用的是两两有序表合并的思想。
21.冒泡排序方法使键值大的记录逐渐下沉,使键值小的记录逐渐上浮。
22.直接插入排序方法能够每次使无序表中的第一个记录插入到有序表中。
23.直接选择排序方法能够每次从无序表中顺序查找出一个最小值。
三、应用题
已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用下列各种排序法进行排序时每一趟的排序结果:
(1)直接插入法,
(2)冒泡排序法,(3)快速排序法,(4)简单选择排序法,(5)堆排序法,(6)归并排序法。
解答:
(1)直接插入排序
(0)[46]745314263886652734
(1)[4674]5314263886652734
(2)[465374]14263886652734
(3)[14465374]263886652734
(4)[1426465374]3886652734
(5)[142638465374]86652734
(6)[14263846537486]652734
(7)[1426384653657486]2734
(8)[142627384653657486]34
(9)[14262734384653657486]
(2)冒泡排序法
(0)[46745314263886652734]
(1)[465314263874652734]86
(2)[4614263853652734]7486
(3)[14263846532734]657486
(4)[142638462734]53657486
(5)[1426382734]4653657486
(6)[14262734]384653657486