数据结构期末复习题Word格式文档下载.docx

上传人:b****5 文档编号:19528716 上传时间:2023-01-07 格式:DOCX 页数:27 大小:210.31KB
下载 相关 举报
数据结构期末复习题Word格式文档下载.docx_第1页
第1页 / 共27页
数据结构期末复习题Word格式文档下载.docx_第2页
第2页 / 共27页
数据结构期末复习题Word格式文档下载.docx_第3页
第3页 / 共27页
数据结构期末复习题Word格式文档下载.docx_第4页
第4页 / 共27页
数据结构期末复习题Word格式文档下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数据结构期末复习题Word格式文档下载.docx

《数据结构期末复习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构期末复习题Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。

数据结构期末复习题Word格式文档下载.docx

)方法比较次数较少。

D)选择排序

(9)如果只考虑有序树的情形,那么具有7个结点的不同形态的树共有()棵。

A)132B)154C)429D)前面均不正确

(10)对n(n>

=2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是(

A)

C)

该树一定是一棵完全二叉树

树中一定没有度为1的结点

树中两个权值最小的结点一定是兄弟结点

树中任一非叶结点的权值一定不小于下一任一结点的权值

二、(本题8分)

斐波那契数列Fn定义如下:

Fo=0,F1=1,

请就此斐波那契数列,回答下列问题:

(1)在递归计算Fn的时候,需要对较小的Fn-1,Fn-2,…,F1,Fo精确计算多少次?

(2)若用有关大0表示法,试给岀递归计算Fn时递归函数的时间复杂度是多少?

三、(本题8分)

Fn=Fn-1+Fn-2

证明:

如果一棵二叉树的后序序列是U—U2,…,un,中序序列是Up^Up,…,uPn,则由序列1,2,…,n可通

过一个栈得到序列P-P2,…,pn。

四、(本题8分)

如下图所示为5个乡镇之间的交通图,乡镇之间道路的长度如图中边上所注。

现在要在这5个乡镇中选

择一个乡镇建立一个消防站,问这个消防站应建在哪个乡镇,才能使离消防站最远的乡镇到消防站的路程最

 

短。

试回答解决上述问题应采用什么算法,并写岀应用该算法解答上述问题的每一步计算结果。

五、(本题8分)

证明一个深度为n的AVL树中的最少结点数为:

Nn=Fn+2-1(n>

0)

其中,Fi为Fibonacci数列的第i项。

六、(本题8分)

简单回答有关AVL树的问题:

(北方名校经典试题)

(1)在有n个结点的AVL树中,为结点增加一个存放结点高度的数据成员,那么每一个结点需要增加多少个字位(bit)?

(2)若每一个结点中的高度计数器有8bit,那么这样的AVL树可以有多少层?

最少有多少个关键字?

七、(本题8分)

设有12个数据{25,40,33,47,12,66,72,87,94,22,5,58},它们存储在散列表中,利用线性探测再散列解决冲突,要求插入新数据的平均查找次数不超过3次。

(1)该散列表的大小m应设计多大?

(2)试为该散列表设计相应的散列函数。

(3)顺次将各个数据散列到表中。

(4)计算查找成功的平均查找次数。

八、(本题8分)

已知某电文中共岀现了10种不同的字母,每个字母岀现的频率分别为A:

8,B:

5,C:

3,D:

2,E:

7,F:

23,G:

9,H:

11,I:

2,J:

35,现在对这段电文用三进制进行编码(即码字由0,丨,2组成),问

电文编码总长度至少有多少位?

请画岀相应的图。

九、(本题9分)

已知一棵度为m的树中有N1个度为1的结点,N2个度为2的结点,…,Nm个度为m的结点。

试问该树中有多少个叶子结点?

十、(本题15分)

试用递归法编写输出从n个数中挑选k个进行排列所得序列的算法。

模拟试题(七)参考答案

一、单项选择题(每小题2分,共20分)

(1)参考答案:

(2)【分析】如下所示,三对角矩阵第1行和最后1行非零元素个数为2个,其余各行的非零元素个数是3个,所知&

6,65前面共有2+3*64=194个非零元素,a36,65本身是第195个非零元。

参考答案:

(4)【分析】设顶点按拓扑排序序列为:

vo,V1,…,w-1,则对于邻接矩阵A,只有当i<

j时,才可能有弧<

vi,vj>

,也就是当i>

j时,一定没有弧<

所以这时A[i][j]=O,可知邻接矩阵为三角矩阵。

(5)【分析】设另一棵子树的结点个数为n,所以有m=n+k+1,可知n=m-k-l。

(6)

【分析】因为K个关键字互为同义词,只有在存入第一个关键字的情况下不发生冲突,所以至少需进行1+2+…+K=K(K+1)/2次探测。

(7)【分析】由于每个非终端结点的平衡因子均为0,所以每个非终端结点必有左右两个孩子,且左子

树的高度和右子树的高度相同,这样AVL树是满二叉树。

高度为k的满二叉树的结点数为2k-l。

(8)

【分析】本题中只有直接插入排序利用前面有序的子序列这个性质,如用直接插入排序对本题只需将最后一个元素插入到前面99999个元素的有序子序列中即可,显然比较次数较少。

(9)【分析】具有n个结点有不同形态的树的数目和具有n-l个结点互不相似的二叉树的数目相同(将树转化为二叉树时,根结点右子树为空,所以除根结点而外只有左子树,其不相似的二叉树的等价于不相似

11

的左子树)。

具有n个结点互不相似的二又树的数目为C;

n,本题中应为C誇132

n161

(10)参考答案:

【解答】

(1)设在计算Fn时,由Fn-l+Fn-2可知Fn-1要精确计算1次;

由Fn-1=Fn-2+Fn-3可知Fn=2Fn-2+Fn-3,Fn-2要精确计算2次;

由Fn-2=Fn-3+Fn-4可知Fn=3Fn-3+2Fn-4,Fn-3要精确计算3次,Fn=3Fn-3+2Fn-4公式中Fn-3的系数为Fn-3要精确计算次数,而Fn-4的系数为Fn-2要精确计算次数,以此类推,设Fn-j的精确计算次为j则有:

Fn=aj*Fn-j+aj-1*Fn-j-1。

由Fn-j=Fn-j-1+Fn-j-2可知Fn=(aj+ai-1)*Fn-j-1+aj*Fn-j-2,Fn-j-1的精确计算次数为aj+1,所以有:

a+1=aj+aj-1

由于Fn-1要精确计算a1为1次,即a1=1,即可知Fn-1,Fn-2,…,F1,Fo的精确计算次为:

1,2,3,5,……,a=aj-1+ai-2

与斐波那契数列数列:

0,1,2,3,5,,Fn=Fn-1+Fn-2

比较可知aj=Fj+1。

(2)由于Fn的计算最终要转化为Fo与F1之和,其加法的计算次数为Fo与F1的精确计算次数之和再减

1之差,由于F0=Fn-n与F1=Fn-(n-1),所以计算Fn时,加法计算次数为:

an+an-1-1=Fn+1+Fn-1

由于Fn=1(「^)n1(^-^)n,可知时间复杂度为0((】-)n)。

诟27522

三、(本题8分)

【解答】当n=1时,结论显然成立。

设n<

=k时结论成立,当n=k+1时,设一棵二叉树的后序序列是比,口2,…,u,中序序列是uP,uP,…,uP,

12nHp2pn

可知Un是二叉树的根结点,设Pjn,可知{Up「Up2,…,Up1}是左子树的结点集合,{Upj1,Upj2,-,Upn}是右子树的结点集合,进一步可知:

(〔)左子树的后序序列是U—U2,…,uj1,中序序列是Up1,Up2,…,UPj1,由归纳假设知序列1,2,…,j-1

可以通过一个栈得序列5,p2,…,pj1。

(2)右子树的后序序列是Uj,Uj1,…,

Un1,中序序列是upj1,up

j2「…,

UPn,设U1uj,U2uj1,…

Unj

Un1;

up1uPj1,UP2UPj2,

'

,UPnjUPn,贝"

P1

Pj1

j1,P2Pj2j1,…,

pnj

pnj1,由归纳假设知序列1,2,…

•,n-j可以通过一个栈得序列

P1,

p2,…,pnj,显然按同样的

方式,

j,j+1,…,n-1可以通过一个栈得序列j

1P1,j1P2,…,j1

Pnj

也就是Pj1,Pj2,…,Pn

(1)

(2)及pjn可知由1,2,…,n

可通过一个栈得到序列訪

P2厂

•,pn。

由数学归纳法可知本题结

论成立。

由弗洛伊德

Floyd)

算法进行求解,

具体步骤如下:

12

9

3

6

15

D

(1)

4

D(0)

13

10

D

(1)

D

(2)

D(3)

,d(4)

设乡镇vi到其他各乡镇的最远距离为max_disdance(vi),则有:

max_disdance(vi)=12,max_disdance(v2)=15,max_disdance(w)=10,max_disdance(v4)=10,max_disdance(v5)=15,所以可知消防站应建在v或v4乡镇,才能使离消防站最远的乡镇到消防站的路程最短。

五、(本题8分)

【解答】对n用归纳法证明。

当n=1时,有N仁F3-l=2-l=1至叽当n=2时,有N2=F4-1=3-仁2。

k时也成立,即有Nn=Fn+2-1成立。

当n=k+1,对于一个k+l层深度的平衡二叉树而言,其左右子树都是平衡的。

结点数为最少的极端情况,故左右子树中的结点数是不相等的,设其中一个是k层深度的二叉平衡树,另一个是k-l层深度的二叉平衡树。

所以有:

Nk+1=1+Nk+Nk-1==1+(Fk+2-1)+(Fk+1-1)=Fk+2+Fk+1-1=Fk+3-1当n=k+1时成立,由此可知深度为n都等式都成立。

六、(本题8分)

【解答】n个结点的平衡二叉树的最大高度为式:

2x>

h>

2x-1,所以有:

xlog2hlog2(log』C5(n1))2)

2

七、(本题8分)

(1)线性探测再散列的哈希表查找成功的平均查找长度为:

Snl

(1)<

3,解得aW4/5,

21

也就是12/m<

4/5,所以m》15,可取m=15。

(2)散列函数可取为H(key)=key%13

(3)散列表如表7-4所示。

散列表

1

5

7

8

11

14

40

66

94

58

33

47

72

87

22

25

(4)12个数据{25,40,33,47,12,66,72,87,94,22,5,58^的比较次数分别是:

1,1,1,1,2,2,3,2,1,3,1,1。

可知查找成功的平均查找次数=(1+1+1+1+2+2+3+2+1+3+1+1)/12=1.25

八、(本题8分)

【解答】有n个叶子结点的带权路径长度最短的二叉树称哈夫曼树,同理,存在有n个叶子结点的带权

路径长度最短的三叉、四叉、……、k叉树,也称为哈夫曼树。

如叶子结点数目不足以构成正则的k叉树(树

中只有度为k或0的结点),即不满足(n-l)MOD(k-l)=0,需要添加权为0的结点,添加权为0的结点的个数为:

k-(n-1)M0D(k-1)-1。

添加的位置应该是距离根结点的最远处。

所构造出的哈夫曼树如下图所示:

wili=191

i1

其中,每个字母的编码长度等于叶子结点的路径长度,电文的总长度为

注释:

对于正则的k叉树,设叶结点数为n,度为k的结点数为nk,结点总数为m,则有m-仁knk,m=nk+n,两式相减可得n-1=(k-1)nk,即(n-l)MOD(k-l)=0;

如n与k不满足此关系,n加上k-(n-1)MOD(k-1)-1后,n'

=n+(k-(n-1)MOD(k-1)-1),这时:

(n'

-l)MOD(k-l)=(n+(k-(n-1)MOD(k-1)-1)-l)MOD(k-l)

=((n-1)+(k-1)-(n-1)MOD(k-1))MOD(k-l)

=((n-1)-(n-1)M0D(k-1))M0D(k-l)

=0。

现有12个初始归并段,其记录数分别为{30,44,8,6,3,20,60,18,9,62,68,85」采用3-路平衡归并,画岀最

佳归并树。

九、(本题9分)

【解答】设该树中结点总数为

N,叶子结点个数为

N0,则有:

NNi

i0

(1)

N1iNi

(2)

(2)-

(1)再经过移项可得:

N01(i

1)Ni

对于排列的解空间可构造一个虚拟的解空间树,比如n=5,k=3时的解空间树如下图所示,可采用对此

树进行先序遍历方式进行遍历,并用递归法进行递归输出从n个数中挑选k个进行排列所得序列。

具体算法实现如下:

//文件路径名:

exam7\alg.htemplatevclassElemType>

voidArrage(ElemTypea[],intk,intn,intoutlen=0)

//操作结果:

回溯法输岀排列序列,a[0..k-1]为k个数的排列序列outlen为当前所求排列//序列的长度,其中outlen=k时的排列序列为所求;

n为list数组长度

//处理a[i]Swap(a[outlen+1],a[i]);

Arrage(a,k,n,outlen+1);

//Swap(a[outlen+1],a[i]);

{

if(k<

0||k>

=n)return;

inti;

if(outlen==k+1)

{//得到一个排列

for(i=0;

i<

k;

i++)

{//输出一个排列

cout<

<

a[i];

}

"

"

;

else

{//对解空间进行前序遍历,

for(i=outlen;

n;

i++){

//此时无排列

〃临时变量

//输岀a[i]

//用空格分隔不同排列

a[outlen..n]有多个排列,递归的生成排列

//交换a[outlen+1]与a[i]对序列长度outlen+1递归

//交换a[outlen+1]与a[i]

*模拟试题(八)

注:

本套试题选作

一、单项选择题(每小题2分,共20分)

(1)一个n*n的带状矩阵A=[aj]如下:

a11

a21

2,n1an2,n2

an1,n

a23

a33

a12

a22

a32

an2,n1

an1,n1an1,n

an,n1ann

将带状区域中的元素aj(|i-j|<

1)按行序为主序存储在一维数组

()。

A)i+2j-2B)2i+j-3

(2)一nxn的三角矩阵A=[aj]如下:

3i-j

B[3n-2]中,元素aj在B中的存储位置是

D)i+j+1

aii

a1n

a2n

ann

将三角矩阵中元素aj(i<

j)按行序为主序的顺序存储在一维数组

B[n(n+1)/2]中,则aj在B中的位置是

A)(i-1)(2n+i)/2+i-jI

C)(i-1)(2n-i)/2+j-i-1

(3)设有一棵度为3的树,其叶结点数为结点数为n3,贝Un0与n1,n2,n3满足关系(

A)n0=n2+1B)n0=n1+2n3+1

(4)G是一个非连通无向图,共有28条边,则该图至少有(

A)6B)7C)8

(5)设图G用邻结表存储,则拓扑排序的时间复杂度为(A)

(6)用

B)(i-1)(2n-i+2)/2+j-i

D)(i-1)(2n-i+2)/2+j-i-1

fno,度为1的结点数为n1,度为2的结点数为n2,度为3的

IC)n0=n2+n3+1D)

=n1+n2+n3

)个顶点。

O(n)B)O(n+e)C)O(n2)

n个键值构造一棵二叉排序树,最低高度为(

O(n>

e)

n

(7)若需在O(nlogn)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是

C)nIog2n

log2n1

A)快速排序B)堆排序C)归并排序D)直接插入排序

(8)在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()。

(北方名校经

典试题)

后的某个排列),则在输岀序列中不可能岀现当ivjvk时有pjvpkvpi的情况。

三、(本题8分)

已知某一完全k叉树只有度为k的结点及叶结点,设叶结点数为n0,试求它的树高ho(南方名校经典试题)

四、(本题8分)

试讨论怎样在一棵中序线索二叉树上查找给定结点x在后序序列中的后继

具有n个关键字的B一树的查找的最大路径长度是多少?

对长度为12的有序表(a1,a2,…,aQ(其中a<

a当i<

j时)进行折半查找,在设定查找不成功时,关键字x<

a1、x>

a12以及a<

x<

ai+1(i=1,2,…,11等情况发生的概率相等,则查找不成功的平均查找长度是多少?

(1)设T是具有n个内结点的判断二叉树,I是它的内路径长度,E是它的外路径长度,试利用归纳法证明E=I+2n,n>

0。

(2)利用

(1)的结果,试说明,成功查找的平均比较次数s与不成功查找的平均比较次数u之间的关

系,可用公式s(1+)u1,n>

0表示

提示:

判断二叉树只有度为0或度为2的结点;

判断二叉树成功查找的比较次数为内路径长度与内结点数之和,不成功查找的比较次数为外路径长度。

一个深度为h的满m叉树有如下性质:

第h层上的结点都是叶结点,其余各层上每个结点有m棵非空子树。

问:

(1)第k层有多少个结点?

(k<

h)

(2)整棵树有多少个结点?

(3)若按层次从上到下,每层从左到右的顺序从1开始对全部结点编号,编号为i的结点的双亲结点的编号是什么?

编号为i的结点的第j个孩子结点(若存在)的编号是什么?

设散列表的关键字取值范围为0~m-1,n为对散列表的最大插入次数,设计散列表,允许使用以O(m+n)

空间,要求查找、插入和删除算法的时间复杂度都是0

(1)。

模拟试题(八)参考答案

一、单项选择题(每小题2分,共20分)

(1)参考答案:

B)

【分析】存储位置=n+(n-1)+…+(n-i+2)+i-j=(i-1)(2n-i+2)/2+j-i。

(3)

【分析】用n表示结点总数,则有:

n=n0+n1+n2+n3;

由于除根结点而外,结点与分支一一对应,而分支数=ni+2n2+3n3,即有:

n-1=ni+2n2+3n3。

由上面两式可得:

n0=n1+2n3+1

(4)

【分析】本题中由于是非连图,至少有一个顶点与其他顶点不连,这个顶点是孤立点,其他顶点可组成一个连通图,由于8个顶点的完全图共有28条边,所以具体28个顶点的连通图的顶点个数至少为8,这样非连通图至少有9个顶点。

D)

(5)【分析】对于有n个顶点e条边的有向图,建立各顶点的入度时间复杂度为0(e),建立入度为零的栈的时间复杂度为0(n),在拓扑排序过程中,最多每个顶点进一次栈,入度减1的操作最多总共执行e次,可知总的时间复杂度为0(n+e)

(6)【分析】当用n个键值构造一棵二叉排序树是一棵完全二叉树时,高度最低,此时高度为log2ni。

(7)【分析】快速排序和堆排序都是不稳定的,应排除;

归并排序稳定,时间复杂度0(nlogn),满足条

件;

直接插入排序,时间复杂度为0(n2),排除。

C)

(8)【分析】对直接插入排序而言,算法时间复杂度为0(n2),但若待排记录序列为“正序”时,其时间复杂度

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1