数据结构习题及答案 下载本文

58.在一棵具有35个结点的完全二叉树中,该树的深度为()。

A.6 B.7 C.5 D.8

59.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左孩子结点编号为()。 A.2i B.2i-1 C.2i+1 D.2i+2

60.在一棵完全二叉树中,若编号为i的结点存在右孩子,则右孩子结点编号为()。 A.2i B.2i-1 C.2i+1 D.2i+2

61.在一棵完全二叉树中,对于编号为i(i>1)的结点其双亲结点的编号为()。 A.(i+1)/2 B.(i-1)/2 C.i%2 D.i/2

62.有如图1.1所示的一棵二叉树,则该二叉树所含单支结点数为()。 A.2 B.3 C.4 D.5

63.有如图1.2所示的一棵二叉树,则该二叉树的中序遍历序列为()。 A. ABCDEFG B. CDBGFEA C. CBDAEGF D. ABECDFG

64.有如图1.2所示的一棵二叉树,则该二叉树的先序遍历序列为()。 A.ABCDEFG B.CDBGFEA C.CBDAEGF D.ABECDFG

65.有如图1.2所示的一棵二叉树,则该二叉树的后序便利序列为()。 A.ABCDEFG B.CDBGFEA C.CBDAEGF D.ABECDFG 66.利用n个值生成的哈夫曼树中共有()个结点。

A.n B.n+1 C.2n D.2n-1

67.利用3,6,8,12这4个值作为叶子结点的权,生成一棵哈夫曼树,该树的带权路径长度为()。

A.55 B.29 C.58 D.38

68.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有的入度数之和为()。 A.s B.s-1 C.s+1 D.n

69.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有的度数之和为()。 A. s B. s -1 C. s +1 D.2s

70.在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数为()。 A.n B.e C.n+e D.2e

71.在一个具有n个顶点的无向完全图中,所含的边数为()。 A.n B.n(n-1) C.n(n-1)/2 D.n(n+1)/2 72.在一个具有n个顶点的有向完全图中,所含的边数为()。 A.n B.n(n-1) C.n(n-1)/2 D.n(n+1)/2

73.在一个具有n个顶点的无向连通图中,它包含的连通分量的个数为()。 A.0 B.1 C.n D.n+1

74.若有一个图中包含k个连通分量,若按照深度优先搜索的方法访问所有顶点,则必须调用()次深度优先搜索遍历的算法。

A.k B.1 C.k-1 D.k+1

75.若要把n个顶点连接为一个连通图,则至少需要()条边。 A.n B.n+1 C.n-1 D.2n

76.在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为()。 A.n B.ne C.e D.2e

77.在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素的个数为()。 A.n B.ne C.e D.2e

78.在一个具有n个顶点和e条边的无向图的邻接矩阵中,边结点的个数为()。

A.n B.ne C.e D.2e

79.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应邻接表中该顶点单链表的边数结点为()。 A.k1 B.k2 C.k1-k2 D.k1+k2

80.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应逆邻接表中该顶点单链表的边数结点为()。 A.k1 B.k2 C.k1-k2 D.k1+k2

81.对于一个无向图,下面()的说法是正确的。

A.每个顶点的入度等于出度 B.每个顶点的度等于入度和出度之和 C.每个顶点的入度为0 D.每个顶点的出度为0

82.在一个有向图的邻接表中,每个顶点单链表中结点的个数等于该顶点的()。

A.出边数 B.入边数 C.度数 D.度数减一 83.若一个图的边集为{(A,B)(A,C)(B,D)(C,F)(D,E)(D,F)},则从顶点A开始对该图进行深度优先搜索,得到的顶点序列可能为()。

A. ABCFDE B. ACFDEB C. ABDCFE D. ABDFEC 84.若一个图的边集为{(A,B)(A,C)(B,D)(C,F)(D,E)(D,F)},则从顶点A开始对该图进行广度优先搜索,得到的顶点序列可能为()。 A.ABCDEF B.ABCFDE C.ABDCEF D.ACBFDE 85.若一个图的边集{(1,2)(1,4)(2,5)(3,1)(3,5)(4,3)},则从顶点1开始对该图进行深度优先搜索,得到的顶点序列可能为()。 A.1,2,5,4,3 B.1,2,3,4,5 C.1,2,5,3,4 D.1,4,3,2,5 86.若一个图的边集{(1,2)(1,4)(2,5)(3,1)(3,5)(4,3)},则从顶点1开始对该图进行广度优先搜索,得到的顶点序列可能为()。

A. 1,2,3,4,5 B. 1,2,4,3,5 C. 1,2,4,5,3 D. 1,4,2,5,3 87.由一个具有n个顶点的连通图生成的最小树中有()条边。

A.n B.n-1 C.n+1 D.2n

88.若查找每一个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为()。 A. n B. n+1 C. (n-1)/2 D. (n+1)/2

89.对长度为n的单链有序表,若查找每个元素的概率相等,则查找任一个元素的平均查找长度为()。 A. n/2 B.(n+1)/2 C. (n-1)/2 D.n/4

90.对于长度为9的顺序存储的有序表,若采用二分查找,在等概率情况下的平均查找长度为()的值除以9。

A.20 B.18 C.25 D.22

91.对于长度为18的顺序存储的有序表,若采用二分查找,则查找第15个元素的查找长度为()。

A.2 B.3 C.4 D.6

92.对于顺序存储的有序表(5,12,20,26,37,42,46,50,64),若采用二分查找,则查找元素26的查找长度为()。 A.2 B.3 C.4 D.5

93.在分块查找中,若用于保存数据元素的主表长度为n,它被分为k个子表,每个子表的长度均为n/k,若用顺序查找确定块,则分块查找的平均查找长度为()。

A.n+k B.k+n/k C.(k+n/k)/2 D.(k+n/k)/2+1

94.在分块查找中,若用于保存数据元素的主表长度为144,它被分为12个子表,每个子表的长度均为12,若用顺序查找确定块,则分块查找的平均查找长度为()。 A.13 B.24 C.12 D.79

95.在一棵深度为h的具有n个元素的二叉排序树中,查找所有元素的最长查找长度为()。 A.n B.lbn C.(h+1)/2 D.h

96.在一棵平衡二叉排序树中,每个结点的平衡因子的取值范围是()。

A.-1~1 B.-2~2 C.1~2 D.0~1

97.若根据查找表(23,44,36,48,52,73,64,58)建立线性哈希表,采用H(K)=K计算哈希地址,则元素64的哈希地址为()。

A.4 B.8 C.12 D.13

98.若根据查找表(23,44,36,48,52,73,64,58)建立线形哈希表,采用H(K)=K计算哈希地址,则哈希地址为3的元素个数为()。 A.1 B.2 C.3 D.4

99.若根据查找表建立长度为m的线性哈希表,采用线性探测再哈希法处理冲突,假定对一个元素第一次计算的哈希地址为d,则下一次的哈希地址为()。 A.d B.d+1 C.(d+1)/m D.(d+1)%m

100.在采用线性探测再哈希法处理冲突的线性哈希表上,假定装填因子a的值为0.5,则查找任一个元素的平均查找长度为()。 A.1 B.1.5 C.2 D.2.5

101.在哈希查找中,平均查找长度主要与()有关。

A.哈希表长度 B.哈希元素个数 C.装填因子 D.处理冲突方法 102.若对n个元素进行直接插入排序,则进行第i趟排序过程前,有序表中元素的个数为()。 A.i B.i+1 C.i-1 D.1

103.若对n个元素进行直接插入排序,在进行第i趟排序时,为寻找插入位子最多需要进行()次元素的比较,假定第0号元素放有待查的键值。

A. i B.i-1 C.i+1 D.1

104.若对n个元素进行直接插入排序,在进行第i趟排序时,假定元素r[i+1]的插入位置为r[j],则需要移动元素的次数为()。 A.j-i B.i-j-1 C.i-j D.i-j+1

105.若对n个元素进行直接插入排序,在进行任意一趟排序的过程中,为寻找插入位置而需要的时间复杂度为()。 A.O(1) B.O(n) C.O(n2) D. O(lbn)

106.在对n个元素进行直接插入排序的过程中,共需要进行()趟。 A.n B.n+1 C.n-1 D.2n

107.对n个元素进行直接插入排序的时间复杂度为()。 A.O(1) B.O(n) C.O(n2) D. O(lbn)

108.在对n个元素进行冒泡排序的过程中,第一趟排序至多进行()对相邻元素之间的交换。 A .n B.n-1 C.n+1 D.n/2

109.在对n个元素进行冒泡排序的过程中,最坏情况下的时间复杂度为()。 A.O(1) B.O(lbn) C.O(n2) D.O(n)

110.在对n个元素进行冒泡排序的过程中,至多需要()趟完成。 A .1 B.n C.n-1 D.n/2

111.在对n个元素进行快速排序的过程中,最好情况下需要进行()趟。

A.n B.n/2 C.lbn D.2n

112.在对n个元素进行快速排序的过程中,最坏情况下需要进行()趟。

A.n B.n-1 C.n/2 D.lbn

113.对下列4个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()。 A.1,3,5,7,9 B.9,7,5,3,1 C.5,3,1,7,9 D.5,7,9,1,3

114.假定对元素序列(7,3,5,9,1,12,8,15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。 A.2 B.3 C.4 D.5

115.在对n个元素进行简单选择排序的过程中,在第i趟需要从()个元素中选择出最小值元素。

A.n-i+1 B.n-i C.i D.i+1

116.若对n个元素进行简单选择排序,则进行任一趟排序的过程中,为寻找最小值元素所需要的时间复杂度为()。 A.O(1) B.O(lbn) C.O(n2) D. O(n)

117.假定一个初始堆为(1,5,3,9,12,7,15,10),则进行第一趟堆排序后得到的结果为()。

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 118.若一个元素序列基本有序,则选用()方法较快。 A.直接插入排序 B.简单选择排序 C.堆排序 D.快速排序

119.若要从1000个元素中得到10个最小元素,最好采用()方法。 A.直接插入排序 B.简单选择排序 C.堆排序 D.快速排序 120.在平均情况下速度最快的排序方法为()。

A.简单选择排序 B.冒泡排序 C.堆排序 D.快速排序

二﹑填空题

1.数据的逻辑结构可分为____和____两大类。

2.数据的存储结构被分为____,_____,_____和____4种。

3.在下面的程序段中,s=s+p语句被执行次数为____,p*=j语句的执行次数为____,该程序的复杂度为____。 int i=0,s=0; while(++i<=n) { int p=1;

for(int j=1;j<=i;j++) p*=j; s=s+p;

}

4.一种数据结构的元素集合K和它的二元关系R为:K={a,b,c,d,e,f,g,h} R={} 则该数据结构具有____结构。

5.线性表的两种存储结构分别为____和____。

6.线性表的顺序存储结构称为____,链式存储结构称为____。

7.若经常需要对线性表进行插入和删除运算,则最好采用__存储结构,若经常需要对线性表