数据结构年月答案文档格式.docx

上传人:b****2 文档编号:6032212 上传时间:2023-05-05 格式:DOCX 页数:14 大小:86.61KB
下载 相关 举报
数据结构年月答案文档格式.docx_第1页
第1页 / 共14页
数据结构年月答案文档格式.docx_第2页
第2页 / 共14页
数据结构年月答案文档格式.docx_第3页
第3页 / 共14页
数据结构年月答案文档格式.docx_第4页
第4页 / 共14页
数据结构年月答案文档格式.docx_第5页
第5页 / 共14页
数据结构年月答案文档格式.docx_第6页
第6页 / 共14页
数据结构年月答案文档格式.docx_第7页
第7页 / 共14页
数据结构年月答案文档格式.docx_第8页
第8页 / 共14页
数据结构年月答案文档格式.docx_第9页
第9页 / 共14页
数据结构年月答案文档格式.docx_第10页
第10页 / 共14页
数据结构年月答案文档格式.docx_第11页
第11页 / 共14页
数据结构年月答案文档格式.docx_第12页
第12页 / 共14页
数据结构年月答案文档格式.docx_第13页
第13页 / 共14页
数据结构年月答案文档格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构年月答案文档格式.docx

《数据结构年月答案文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构年月答案文档格式.docx(14页珍藏版)》请在冰点文库上搜索。

数据结构年月答案文档格式.docx

7.若一棵具有n(n>

0)个结点的二叉树的先序序列与后序序列正好相反,则该二叉树一定是()

A.结点均无左孩子的二叉树B.结点均无右孩子的二叉树

C.高度为n的二叉树D.存在度为2的结点的二叉树

8.若一棵二叉树中度为l的结点个数是3,度为2的结点个数是4,则该二叉树叶子结点的个数是()p73

A.4B.5

C.7D.8

9.下列叙述中错误的是()108

A.图的遍历是从给定的源点出发对每一个顶点访问且仅访问一次107

B.图的遍历可以采用深度优先遍历和广度优先遍历108

C.图的广度优先遍历只适用于无向图

D.图的深度优先遍历是一个递归过程108

10.已知有向图G=(V,E),其中V={V1,V2,V3,V4},E={<

V1,V2>

,<

V1,V3>

V2,V3>

V2,V4>

V3,V4>

},图G的拓扑序列是()

A.V1,V2,V3,V4B.V1,V3,V2,V4

C.V1,V3,V4,V2D.V1,V2,V4,V3

11.平均时间复杂度为O(nlogn)的稳定排序算法是()P164

A.快速排序149非稳定O(nlogn)B.堆排序156非稳定

C.归并排序D.冒泡排序143稳定O(n2)

12.已知关键字序列为(51,22,83,46,75,18,68,30),对其进行快速排序,第一趟划分完成后的关键字序列是()←J→I

(51,22,83,46,75,18,68,30)

51

22

83

46

75

18

68

30

A.(18,22,30,46,51,68,75,83)B.(30,18,22,46,51,75,83,68)

C.(46,30,22,18,51,75,68,83)D.(30,22,18,46,51,75,68,83)

13.某索引顺序表共有元素395个,平均分成5块。

若先对索引表采用顺序查找,再对块中元素进行顺序查找,则在等概率情况下,分块查找成功的平均查找长度是()P174

A.43B.79

C.198D.200

14.在含有10个关键字的3阶B-树中进行查找,至多访问的结点个数为()191

A.2B.3

C.4D.5

15.ISAM文件系统中采用多级索引的目的是()p213

A.提高检索效率B.提高存储效率

C.减少数据的冗余D.方便文件的修改

二、填空题(本大题共10小题,每小题2分,共20分)

请在每小题的空格中填上正确答案。

错填、不填均无分。

16.数据结构由数据的逻辑结构、存储结构和数据的____________三部分组成。

运算p1

17.在单链表中某结点后插入一个新结点,需要修改_______________个结点指针域的值。

两个

18.设栈S的初始状态为空,若元素a、b、c、d、e、f依次进栈,得到的出栈序列是b、d、c、f、e、a,则栈S的容量至少是________________。

3

19.长度为零的串称为________________。

空串

20.广义表G=(a,b,(c,d,(e,f)),G)的长度为________________。

4p67

21.一棵树T采用孩子兄弟链表存储,如果树T中某个结点为叶子结点,则该结点在二叉链表中所对应的结点一定是________________。

左右指针域均为空

22.一个有n个顶点的无向连通图,最少有________________条边。

n-1

23.当待排关键字序列基本有序时,快速排序、简单选择排序和直接插入排序三种排序方法中,运行效率最高的是________________。

直接插入排序

24.在一棵深度为h的具有n个结点的二叉排序树中,查找任一结点的最多比较次数是______________。

h

25.不定长文件指的是文件的____________大小不固定。

记录的信息p207

三、解答题(本大题共4小题,每小题5分,共20分)

26.已知一棵二叉排序树(结点值大小按字母顺序)的前序遍历序列为EBACDFHG,

请回答下列问题:

(1)画出此二叉排序树;

前序遍历序列:

EBACDFHG中序遍历序列:

ABCDEFGH

(2)若将此二叉排序树看作森林的二叉链表存储,请画出对应的森林。

●抹线:

将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树

●还原:

将孤立的二叉树还原成树

●加线:

若p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子,……沿分支找到的所有右孩子,都与p的双亲用线连起来

抹掉原二叉树中双亲与右孩子之间的连线

●调整:

将结点按层次排列,形成树结构

27.已知有向图的邻接表如图所示,请回答下面问题:

103、105

(1)给出该图的邻接矩阵;

(2)从结点A出发,写出该图的深度优先遍历序列。

1

 

深度优先遍历序列:

A→B→C→E→D

28.已知待排记录的关键字序列为{25,96,11,63,57,78,44},请回答下列问题:

(1)画出堆排序的初始堆(大根堆);

(2)画出第二次重建堆之后的堆。

29.已知关键字序列为(56,23,41,79,38,62,18),用散列函数H(key)=key%11将其散列到散列表HT[0..10]中,采用线性探测法处理冲突。

(1)画出散列存储后的散列表:

196

2

4

5

6

7

8

9

10

56

23

79

38

62

41

(2)求在等概率情况下查找成功的平均查找长度。

202(a193)

(1+1/(1-a))/2=15/8=1.725

a=7/11

四、算法阅读题(本大题共4小题,每小题5分,共20分)

30.阅读下列程序。

voidf30(intA[],intn)

{

inti,j,m;

for(i=1;

i<

n;

i++)1、2

for(j=0;

j<

i;

j++)n=3i=2j=1\0

m=A[i*n+j];

A[i*n+j]=A[j*n+i];

A[j*n+i]=m;

}

回答下列问题:

(1)已知矩阵B=

,将其按行优先存于一维数组A中,给出执行函数调

用f30(A,3)后矩阵B的值;

一维数组A原始值:

a0

a1

a2

a3

a4

a5

a6

a7

a8

执行函数f30(A,3)后的值:

B=

(2)简述函数f30的功能。

二维矩阵转置

31.假设以二叉链表表示二叉树,其类型定义如下:

typedefstructnode{

chardata;

structnode*lchild,*rchild;

∥左右孩子指针

}*BinTree;

阅读下列程序。

voidf31(BinTreeT)

InitStack(S);

∥初始化一个堆栈S

while(T||!

StackEmpty(S))

while(T)

Push(S,T);

T=T->

lchild;

if(!

T=Pop(S);

printf(“%c”,T->

data);

T=T->

rchild;

(1)已知以T为根指针的二叉树如图所示,

请写出执行f31(T)的输出结果:

CBEDFAGH

(2)简述算法f31的功能。

中序遍历二叉树

32.阅读下列程序。

(改进的冒泡算法,通过增加M,减少无谓的比较)

voidf32(inta[],intn)

inti,j,m=1,t;

for(i=0;

n-1&

&

m;

i++)

for(j=0;

n;

j++)

printf("

%d"

a[j]);

\n"

);

m=0;

for(j=1;

j<

n-i;

j++)

if(a[j-1]>

a[j])

t=a[j-1];

a[j-1]=a[j];

a[j]=t;

m=1;

}回答问题:

已知整型数组a[]={34,26,15,89,42},写出执行函数调用f32(a,5)后的输出结果。

3426158942

2615344289

1526344289

33.已知顺序表的表结构定义如下:

#defineMAXLEN100

TypedefintKeyType;

typedefstruct

{

KeyTypekey;

InfoTypeotherinfo;

}NodeType;

typedefNodeTypeSqList[MAXLEN];

Intf33(SqListR,NodeTypeX,intp,intq)

{intm;

if(p>

q)return-1;

m=(p+q)/2;

if(R[m].key==X.key)returnm;

if(R[m].key>

X.key)returnf33(R,X,p,m-l);

elsereturnf33(R,X,m+l,q);

(1)若有序的顺序表R的关键字序列为(2,5,13,26,55,80,105),分别写出X.key=18和X.key=26时,执行函数调用f33(R,X,0,6)的函数返回值。

X.key=18执行函数调用f33(R,X,0,6)的函数返回值:

-1

X.key=26执行函数调用f33(R,X,0,6)的函数返回值:

(2)简述算法f33的功能。

对升序排列的结构体数组中折半查找

五、算法设计题(本题10分)

34.假设用带头结点的单循环链表表示线性表,单链表的类型定义如下:

intdata;

structnode*next;

}LinkNode,*LinkList;

编写程序,求头指针为head的单循环链表中data域值为正整数的结点个数占结点总数的比例,若为空表输出0,并给出所写算法的时间复杂度。

函数原型为:

floatf34(LinkListhead)

LinkNode*p;

intc1=0,c2=0;

p=head;

if(p->

next==head)printf(“正整数的结点个数占结点总数的比例为0\n”);

else

{do

{p=p->

next;

if(p->

data>

0)c1++;

c2++;

whlie(p->

next!

=head);

printf(“正整数的结点个数占结点总数的比例为%f\n”,c1*1.0/c2);

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2