数据结构复习题答案.docx

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

数据结构复习题答案.docx

《数据结构复习题答案.docx》由会员分享,可在线阅读,更多相关《数据结构复习题答案.docx(18页珍藏版)》请在冰豆网上搜索。

数据结构复习题答案.docx

数据结构复习题答案

一、选择题

1.栈和队列的共同特点是()。

A.只允许在端点处插入和删除元素

B.都是先进后出

C.都是先进先出

D.没有共同点

2.用链接方式存储的队列,在进行插入运算时().

A.仅修改头指针 B.头、尾指针都要修改

C.仅修改尾指针D.头、尾指针可能都要修改

3.以下数据结构中哪一个是非线性结构?

()

A.队列  B.栈C.线性表  D.二叉树

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在()位置,脚注(10)表示用10进制表示。

A.688B.678C.692D.696

5.树最适合用来表示()。

A.有序数据元素B.无序数据元素

C.元素之间具有分支层次关系的数据D.元素之间无联系的数据

6.二叉树的第k层的结点数最多为().

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

7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为()

A.1,2,3B.9,5,2,3

C.9,5,3D.9,4,2,3

8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为()

A.O

(1)  B.O(n)  C.O(1og2n)D.O(n2)

9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个,

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

10.设有6个结点的无向图,该图至少应有()条边才能确保是一个连通图。

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

11.一个链队列中,f,r分别为队首、队尾指针,则插入s所指结点的操作为()。

A)f->next=c;f=s;B)r->next=s;r=s;

C)s->next=r;r=s;D)s->next=f;f=s;

12.下列说法正确的是()。

A)二叉树中每个结点的度都为2B)二叉树的度为2

C)一棵二叉树的度可小于2D)二叉树中至少有一个结点的度2

13.一棵非空二叉树先序遍历与后序遍历序列正好相反,则该二叉树()。

A)所有的结点均无左孩子B)所有的结点均无右孩子

C)只有一个叶子结点D)是任意一棵二叉树

14.二叉排序树中,键值最小的结点一定()。

A)左指针为空B)右指针为空

C)左右指针均为空D)左右指针均非空

15.n个顶点的强连通图至少有()条边。

A)n-1B)nC)n+1D)n(n-1)

16.在一个有向图中,顶点入度之和与顶点出度之和的比值()。

A)1/2B)1C)2D)4

17.高度为h的二叉树只有度为0和2的结点,则此二叉树至少为(  )结点。

A)2*hB)2*h1C)2*h+1D)h+1

18.设某完全无向图中有n个顶点,则该完全无向图中有()条边。

(A)n(n-1)/2(B)n(n-1)(C)n2(D)n2-1

19.设某棵二叉树中有2000个结点,则该二叉树的最小高度为()。

(A)9(B)10(C)11(D)12

20.设某有向图中有n个顶点,则该有向图对应的邻接表中有()个表头结点。

(A)n-1(B)n(C)n+1(D)2n-1

21.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为()。

(A)2,3,5,8,6(B)3,2,5,8,6

(C)3,2,5,6,8(D)2,3,6,5,8

22.按照二叉树的定义,具有3个结点的二叉树有()种形态。

A)3B)4C)5D)6

23.下列排序算法中,可能会出现在最后一趟开始之前,所有元素都不在其最终

位置上是().

A)堆排序B)冒泡排序C)快速排序D)插入排序

24.一组记录的排序码为46,79,56,38,40,84。

用堆排序方法建立的初始堆为()。

A)79,46,56,38,40,80B)84,79,56,38,40,46 

C)84,79,56,46,40,38D)84,56,79,40,46,38

25.将递归算法转换成对应的非递归算法时,通常需要使用()。

A)栈B)队列C)链表D)树

26.有10个结点的连通无向图,其边数至少有()。

A)8条B)9条C)10条D)11条

27.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()。

A)edcbaB)decbaC)dceabD)abcde

28.高度为h的完全二叉树中所包含的结点数至少为()。

A)2*h个B)2h1个C)2*h+1个D)h+1个

29.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。

(A)O(n)(B)O(nlog2n)(C)O

(1)(D)O(n2)

30.设一棵二叉树的深度为k,则该二叉树中最多有()个结点。

(A)2k-1(B)2k(C)2k-1(D)2k-1

31.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为()。

(A)n(B)e(C)2n(D)2e

32.在二叉排序树中插入一个结点的时间复杂度为()。

(A)O

(1)(B)O(n)(C)O(log2n)(D)O(n2)

33.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。

(A)n(B)n-1(C)m(D)m-1

34.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。

(A)3(B)4(C)5(D)8

35.设用链表作为栈的存储结构则退栈操作()。

(A)必须判别栈是否为满(B)必须判别栈是否为空

(C)判别栈元素的类型(D)对栈不作任何判别

36.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为()。

(A)O

(1)(B)O(log2n)(C)(D)O(n2)

37.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为()。

(A)n,e(B)e,n(C)2n,e(D)n,2e

38.设某强连通图中有n个顶点,则该强连通图中至少有()条边。

(A)n(n-1)(B)n+1(C)n(D)n(n+1)

39.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列()方法可以达到此目的。

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

40.下列四种排序中()的空间复杂度最大。

(A)插入排序(B)冒泡排序(C)堆排序(D)归并排序

二、填空题

1.设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________。

2.设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为_________________________________________________________(设结点中的两个指针域分别为llink和rlink)。

3.根据初始关键字序列(19,22,01,38,10)建立的二叉排序树的高度为____________。

4.深度为k的完全二叉树中最少有____________个结点。

5.设初始记录关键字序列为(K1,K2,…,Kn),则用筛选法思想建堆必须从第______个元素开始进行筛选。

6.设哈夫曼树中共有99个结点,则该树中有_________个叶子结点;若采用二叉链表作为存储结构,则该树中有_____个空指针域。

7.设有一个顺序循环队列中有M个存储单元,则该循环队列中最多能够存储________个队列元素;当前实际存储________________个队列元素(设头指针F指向当前队头元素的前一个位置,尾指针指向当前队尾元素的位置)。

8.设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_______个数据元素;删除第i个位置上的数据元素需要移动表中_______个元素。

9.设一组初始记录关键字序列为(20,18,22,16,30,19),则以20为中轴的一趟快速排序结果为______________________________。

10.设一组初始记录关键字序列为(20,18,22,16,30,19),则根据这些初始关键字序列建成的初始堆为____________。

11.头结点为H的单循环链表为空的条件是__。

12.线性表作为栈时,被称为__。

13.在堆排序、快速排序和归并排序中,若只从最坏情况下排序最快并且要节省内存空间考虑,应选取方法。

14.一棵二叉树有11个度数为0的结点,则该二叉树的二度结点个数为__。

15.平衡二叉树是每个结点的左右子树深度之差的绝对值不超过1的__。

16.关键码序列为21,12,20,35,40,51,87,33,42,90,2,18,34。

步长因子序列为3,1时,一趟希尔排序结果序列为__。

17.顺序存储的线性表相对与链接存储的线性表,其优点是__。

18.就排序的稳定性而言,简单选择排序方法是__。

19.设某无向图G中有n个顶点,用邻接矩阵A作为该图的存储结构,则顶点i和顶点j互为邻接点的条件是________。

20.设无向图对应的邻接矩阵为A,则A中第i上非0元素的个数_________第i列上非0元素的个数(填等于,大于或小于)。

21.for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的时间复杂度为_________。

22.设指针变量p指向单链表中结点A,指针变量s指向被插入的新结点X,则进行插入操作的语句序列为__________________________(设结点的指针域为next)。

23.设有向图G的二元组形式表示为G=(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},则给出该图的一种拓扑排序序列__________。

24.设无向图G中有n个顶点,则该无向图中每个顶点的度数最多是_________。

25.设二叉树中度数为0的结点数为50,度数为1的结点数为30,则该二叉树中总共有_______个结点数。

26.设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为_____________________。

27.设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是_____________________________________________。

28.简单选择排序和直接插入排序算法的平均时间复杂度为___________。

29.快速排序算法的空间复杂度平均情况下为__________,最坏的情况下为__________。

30.散列表中解决冲突的两种方法是_____________和_____________。

31.设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为_________=p;s->right=p->right;__________=s;p->right->left=s;(设结点中的两个指针域分别为left和right)。

32.设完全有向图中有n个顶点,则该完全有向图中共有________条有向条;设完全无向图中有n个顶点,则该完全无向图中共有________条无向边。

33.设关键字序列为(Kl,K2,…,Kn),则用筛选法建初始堆必须从第______个元素开始进行筛选。

34.解决散列表冲突的两种方法是________________和__________________。

35.设一棵三叉树中有50个度数为0的结点,21个度数为2的结点,则该二叉树中度数为3的结点数有______个。

36.高度为h的完全二叉树中最少有________个结点,最多有________个结点。

37.设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟直接插入排序结束后的结果的是__________________________________。

38.设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟简单选择排序结束后的结果的是__________________________________。

39.设一棵二叉树的前序序列为ABC,则有______________种不同的二叉树可以得到这种序列。

40.顺序存储的长度为m的循环队列为空的条件是__。

41.线性表作为队时,被称为__。

42.就快排序和堆排序,若原始记录接近正序或反序,则最好选用方法。

43.在有序表(12、24、36、48、60、72、84)中二分查找关键字72时所需进行的关键字比较次数为__。

44.二叉排序树每个结点的左右子树深度之差的绝对值不超过1,称为__。

45.n阶对称方阵A,以下三角矩阵压缩到一维数组S[n*(n+1)/2]中,若按行序为主存储,则A的第i行第j列元素(i>=j)对应在S中的存储位置是__。

46.顺序存储的线性表相对与链接存储的线性表,其缺点是__。

47.就排序的稳定性而言,快排序方法是__。

48.设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则第4趟直接选择排序结束后的结果为_________________。

49.设连通图G中有n个顶点e条边,则对应的最小生成树上有___________条边。

50.设有一组初始记录关键字序列为(50,16,23,68,94,70,73),则将它们调整成初始堆只需把16与___________相互交换即可。

三、解答题

1、序列70,50,18,26,37,45,62,23,46,59,105,按顺序插入结点,建立一棵二叉排序树,然后删除结点37,删除后树高不能增高。

分别画出该二叉排序树及删除结点37后的二叉排序树。

2、对带权图,给出以Prim算法构造最小生成树过程,并计算该树的权。

 

3、对带权图,给出以克鲁斯卡亚算法构造最小生成树过程,并计算该树的权。

4、正文为“CDDDAABBEECAAECDAACEDDABE”,设计ABCDE这5个字母的哈夫曼编码,使得正文编码最短。

5、给定权值6,12,3,75,40,30,20,65,34,给出按算法建立的哈夫曼树静态三叉链表存储结构。

6、给定权值6,12,3,75,40,30,20,65,34,构建哈夫曼树。

7、先序遍历序列a,b,c,s,g,f,d,e,j,h,k,i和中序遍历序列s,c,b,d,f,e,g,a,h,k,j,i,的二叉树,画出此二叉树,并给出其后序遍历序列。

8、画出深林转化的二叉树,并给出二叉树的先序、中序、后序遍历序列。

9、给定按关键码序列76,42,32,17,73,54,48,62,98,89,92,105,构建小顶堆逐步筛选过程。

10、给定按关键码序列76,42,32,17,73,54,48,62,78,89,2,10,构建大顶堆逐步筛选过程。

11、画出有向图的邻接表和逆邻接表存储示意图。

12、画出图的邻接表存储示意图,并按邻接表给

出深度优先搜索序列和广度优先搜索序列。

 

13、给定关键码序列30,25,46,12,7,6,21,13,15,42,哈希函数h(key)=key%7,基本表长度为10,用线性探测法解决冲突,关键码按给出的顺序填入表中。

请画出哈希表,并求等概率情况下查找成功的平均查找长度。

14、给定关键码序列30,25,46,12,7,6,21,13,15,42,哈希函数h(key)=key%7,基本表长度为10,用二次探测法解决冲突,关键码按给出的顺序填入表中。

请画出哈希表,并求等概率情况下查找成功的平均查找长度。

15、给定关键码序列30,25,46,12,7,6,21,13,15,42,哈希函数h(key)=key%7,基本表长度为7,用拉链法解决冲突,关键码按给出的顺序填入表中,且总是在链表的第一个结点前插入。

请画出哈希表,并求等概率情况下查找成功的平均查找长度。

 

#defineTBLLEN2000

classCQTBL

{public:

voidH1();

private:

MYTYPEt[TBLLEN];

intcnt;//记录表中元素个数

};

voidCQTBL:

:

H1()

{intlow,high;

MYTYPEm;

for(low=0,high=cnt-1;low

{

while(low

while(low=60)high--;

if(low

}

}

 

#defineTBLLEN2000

classCQTBL

{public:

voidMgBAddToA(CQTBL&b);

private:

MYTYPEt[TBLLEN];

intcnt;//记录表中元素个数

};

voidCQTBL:

:

MgBAddToA(CQTBL&b)

{

inti,j,len;

for(i=cnt-1,j=0,len=cnt+t-1;i>=0&&j

{

if(t[i].c>b.t[j].c)t[len]=t[i--];

else

t[len]=b.t[j++];

}

for(;j

cnt=cnt+t;

}

5.

boolCQTBL:

:

AddElem(MYTYPE&a)

{//返回真,添加成功

boolv=false;

if(cnt

{v=true;

for(inti=cnt-1;i>=0&&a.c

t[i+1]=a;cnt++;

}

returnv;

}

6.

typedefstructnode

{

MYTYPEe;

structnode*next;

}NODETYPE;

classLINKTBL

{public:

voidMg(LINKTBL&b);

private:

NODETYPEh;//h头结点,last指向最后一个结点

};

voidLINKTBL:

:

Mg(LINKTBL&b)

{

NODETYPE*pf,*s,*q;

for(pf=&h,s=b.h.next;s!

=NULL;)

{

for(;pf->next!

=NULL&&pf->next->e.c<=s->e.c;)pf=pf->next;

q=s;s=s->next;

q->next=pf->next;

pf->next=q;

pf=q;

}

b.h.next=NULL;

}

7.

voidLINKTBL:

:

NZ()

{

NODETYPE*s,*q;

for(s=h.next,h.next=NULL;s!

=NULL;)

{

q=s;s=s->next;

q->next=h.next;

h.next=q;

}

}

8.

intLINKTBL:

:

GetNodeNum()

{

intv=0;

NODETYPE*s;

for(s=h.next;s!

=&h;s=s->next)v++;

returnv;

}

四、算法设计题

1、对数学成绩,将不及格和及格的学生分成前后两部分,使表前面为不及格的学生,后面为及格的学生。

不要求对这些元素按数学成绩排序,但要求尽量减少交换次数。

2、表A按语文成绩非递减有序,表B按语文成绩非递增有序,将B表学生添加到A表,使A表依然按语文成绩非递减有序,B表不变。

要求移动元素次数不超过两表长度之和。

5、表A按语文成绩非递减有序,向表中添加一个学生,并保持A表的有序性。

6、对两个按语文成绩非递减有序的带头结点单链表A和B,将B表并入A表,而不改变其排序性,并将B表设置为空表。

7、逆置单链表,即将结点顺序为:

H->a1->a2->…->an,置换为:

H->an->…->a2->a1。

要求,不交换元素值,通过修改结点指针完成。

8、求带头结点的单循环链表中的结点个数,不包括头结点。

9、统计二叉树中叶子结点数目

typedefstructnode

{

ELEMe;

structnode*lc,*rc;

}NODE;

classCTREE

{public:

intGetLeaNum(NODETYPE*t);

private:

NODEht;

};

intCTREE:

:

GetLeaNum(NODE*t)

{

intv=0;

if(t!

=NULL)

{

if(t->lc==NLLL&&t->rc==NULL)v++;

v+=GetLeaNum(t->lc)+GetLeaNum(t->rc);

}

returnv;

}

10、统计二叉树中只有一个子女(度为1)的结点数目

intCTREE:

:

GetOneChildNum(NODE*t)

{

intv=0;

if(t!

=NULL)

{

if((t->lc==NLLL&&t->rc!

=NULL)||(t->lc!

=NLLL&&t->rc==NULL))v++;

v+=GetOneChildNum(t->lc)+GetOneChildNum(t->rc);

}

returnv;

}

11、统计二叉树中有两个子女(度为2)的结点数目

intCTREE:

:

GetTwoDgreeNum(NODE*t)

{

intv=0;

if(t!

=NULL)

{

if(t->lc!

=NLLL&&t->rc!

=NULL)v++;

v+=GetTwoDgreeNum(t->lc)+GetTwoDgreeNum(t->rc);

}

returnv;

}

12、统计二

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

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

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

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