《数据结构》复习题汇总.docx

上传人:b****3 文档编号:5322387 上传时间:2022-12-15 格式:DOCX 页数:17 大小:199.60KB
下载 相关 举报
《数据结构》复习题汇总.docx_第1页
第1页 / 共17页
《数据结构》复习题汇总.docx_第2页
第2页 / 共17页
《数据结构》复习题汇总.docx_第3页
第3页 / 共17页
《数据结构》复习题汇总.docx_第4页
第4页 / 共17页
《数据结构》复习题汇总.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《数据结构》复习题汇总.docx

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

《数据结构》复习题汇总.docx

《数据结构》复习题汇总

老师:

       题型结构如下:

      单项选择题,15小题,30分;

      填空题,5小题,10分;

      综合应用题,50分(树、图、查找)

      算法设计与分析,2选1,10分(线性结构)

试卷中一些算法只给英文名称;

考查范围(黑体字为建议的重点考查内容;红字为备注;蓝字为拟纳入的考研大纲内容)

一、绪论

(一)算法、数据结构基本概念

(二)算法分析中O(f(n))符号的含义

(三)时间复杂度简单分析表示

二、线性表

(一)线性表的定义和基本操作

(二)线性表的实现

1.顺序存储

2.链式存储

3.线性表的应用 

三、栈、队列

(一)栈和队列的基本概念

(二)栈和队列的顺序存储结构

(三)栈和队列的链式存储结构

(四)栈和队列的应用

四、树与二叉树

(一)树的概念

(二)二叉树

1.二叉树的定义及其主要特征

2.二叉树的顺序存储结构和链式存储结构

3.二叉树的遍历及应用

(三)树、森林

1.森林与二叉树的转换

2.树的存储结构;

3.树和森林的遍历

4.线索二叉树的基本概念和构造

(四)二叉树的应用

1.哈夫曼(Huffman)树和哈夫曼编码 

2.二叉排序树

五、 图

(一)   图的基本概念

(二)   图的存储及基本操作

1.     邻接矩阵法

2.     邻接表法

(三)   图的遍历

1.     深度优先搜索

2.     广度优先搜索

(四)   图的基本应用

1.     最小(代价)生成树

2.     最短路径

3.     拓扑排序

4.     关键路径

六、  查找

(一)   查找的基本概念

(二)   顺序查找法

(三)   折半查找法

(四)  二叉查找树及其基本操作(只考察基本概念)

(五)平衡二叉树(只考察基本概念)

(六)   散列(Hash)表

(七)   查找算法的分析及应用 

七、      排序

(一)   排序的基本概念

(二)   直接插入排序

(三)   气泡排序(bubblesort)

(四)   简单选择排序

(五)   希尔排序(shellsort)

(六)   快速排序

(七)   堆排序

(八)   二路归并排序(mergesort)

(九)  各种排序算法的比较

(十)  排序算法的应用 

 

选择题

1、顺序队列的出队操作,正确修改队首指针的是(B)

(A)sq.front=(sq.front+1)%maxsize;(B)sq.front=sq.front+1;

(C)sq.rear=(sq.rear+1)%maxsize;(D)sq.rear=sq.rear+1;

2、非空的循环单链表head的尾结点(由指针p指)满足(C)

(A)p->next=NULL(B)p=NULL(C)p->next=head(D)p=head

3、在单键表中,删除p所指结点的直接后继,其中指针修改为(A)

(A)p->next=p->next->next;(B)p=p->next;p->next=p->next->next;

(C)p->next=p->next;(D)p=p->next->next;

4、通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着(B)

(A)数据元素具有同一特点

(B)不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型也要一致

(C)每个数据元素都一样

(D)数据元素所包含的数据项的个数要相等

5、关于线性表,下列说法正确的是(D)

(A)每个元素都有一个直接前驱和直接后继

(B)线性表中至少要有一个元素

(C)表中诸元素的排列顺序必须是由小到大或由大到小的

(D)除第一元素和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继

6、带头结点的单链表,其表头指针为head,则该单链表为空的判断条件是(B)

(A)head==NULL(B)head->next==NULL

(C)head->next==head(D)head!

==NULL

7、含n个顶点的连通图中的任意一条简单路径,其长度不可能超过(C)

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

8、设有一个顺序栈S,元素S1,S2,S3,S4,S5,S6依次进栈,如果6个元素出栈的顺序是S2,S3,S4,S6,S5,S1,则栈的容量至少应该是(B)

(A)2(B)3(C)5(D)6

9、设深度为k的二叉树上只有度为0和度为2的结点,则这类二叉树上所含结点的总数最少为(C)个

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

10、从具有n个结点的单链表中查找指定结点时,若查找每个结点的概率相等,在查找成功的情况下,平均需要比较(D)个结点。

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

11、从对顺序表上的插入、删除算法的时间复杂度分析来说,通常以(B)为标准进行操作。

(A)条件判断(B)结点移动(C)算法表达式(D)赋值语句

12、深度为6的二叉树最多有(B)个结点

(A)64(B)63(C)32(D)31

13、在一个单链表中,已知q所指结点是p所指结点的直接前驱,若在p,q之间插入s结点,则执行(B)操作。

(A)s->next=p->next;p->next=s;(B)q->next=s;s->next=p;

(C)p->next=s->next;s->next=p;(D)p->next=s;s->next=q;

14、在线性表的下列存储结构中,读取元素花费时间最少的是(D)

(A)单链表(B)双链表(C)循环链表(D)顺序表

15、以下关于哈夫曼树的说法,错误的是(D)

(A)一般在哈夫曼树中,权值越大的叶子结点离根结点越近

(B)哈夫曼树中没有度数为1的分支结点

(C)若初始森林中共有n棵二叉树,最终求得的哈夫曼树共有2n-1个结点

(D)若初始森林中共有n棵二叉树,需要进行2n-1次合并后才能剩下一棵最终的哈夫曼树

16.计算机算法指的是解决问题的有限运算序列,它必须具备输入、输出和(B)等5个特性。

A.可执行性、可移植性和可扩充性

B.可行性、确定性和有穷性

C.确定性、有穷性和稳定性

D.易读性、稳定性和安全性

17.线性表采用链表存储地址时(D)。

A.必须是连续的。

B.部分地址必须是连续的。

C.一定是不连续的。

D.连续不连续都可以。

18.设循环队列中数组的下标范围是0..n-1,其头指针front指向队首元素,rear指向队尾元素,则队列的长度为(D)。

A.rear-frontB.rear-front+1

C.(rear-front+1)%(n+1)D.(rear-front+n+1)%n

19.线性表的链式存储结构与顺序(连续)存储结构相比优点是(C)

A.所有的操作/运算算法简单B.便于随机存取

C.便于插入和删除D.便于查找

20.一个栈的输入序列为A,B,C,D,E,则下列序列中不可能是栈的输出序列的是(B)。

A.BCDAEB.EDACB

C.BCADED.AEDCB

22、在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依相同次序从该缓冲区中取出数据打印。

该缓冲区作为数据结构是一个(B)结构。

A.栈B.队列C.表(Table)D.线性表

23、下面四棵树中,数字表示相应叶子结点的权值,则(D)是哈夫曼树(HuffmanTree)。

24、栈和队列的共同点是(C)。

A.都是先进先出B.都是先进后出

C.只允许在端点处插入和删除元素D.没有共同点

25、串是一种特殊的线性表,其特殊性体现在(B)。

A.可以顺序存储B.数据元素是一个字符

C.可以链接存储D.数据元素可以是多个字符

26带头节点的单链表head为空的判定条件是(  A ).

A.head->next==NULLB.head==NULL

C.head->next==headD.head!

=NULL

27对于一个具有n个顶点的无向图,若采用邻接矩阵表示,该矩阵的大小是( D  )

A.nB.(n-1)2

C.n-1D.n2

28设有两个串p和q,求q在p中首次出现的位置的运算称作(B)。

A.连接B.模式匹配

C.求子串D.求串长

29下列排序方法中,(C)不易于在单链表上实现。

A直接插入排序B冒泡排序C快速排序D简单选择排序

30下面关于图的存储的叙述中,哪一个是正确的。

(  A )

A.用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关

  B.用邻接矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关

  C.用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关

  D.用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关

31.排序方法中,从未排序序列中挑选元素,并将其依次与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为(C)

A.快速排序B.起泡排序C插入排序D.选择排序

32.请指出在顺序表{2、5、7、10、14、15、18、23、35、41、52}中,用二分法查找关键码12需做多少次关键码比较。

( D )

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

33.给定下列有向图和初始结点V1,按深度优先遍历的结点序列为( B  )

A、V1,V3,V4,V5,V2

B、V1,V2,V4,V5,V3

C、V1,V2,V5,V3,V4

D、V1,V2,V3,V4,V5

 

34顺序查找法适合于存储结构为(B)的线性表。

A散列存储B顺序存储或链接存储C压缩存储D索引存储

35对线性表进行二分存储时,要求线性表必须(C)。

A以顺序方式存储B以链接方式存储

C以顺序方式存储,且节点按关键字有序排序

D以链接方式存储,且节点按关键字有序排序

二.填空题

1.若一个算法的基本语句的执行次数为(n3+n2log2n+14n)/n2,则该算法的时间复杂度为__O(n)______。

2.6.设栈S和队列Q的初始状态为空,元素a、b、c、d、e、f将依次入栈S,一个元素出栈后即进入队列Q。

若这6个元素出队列的顺序是b、d、c、f、e、a,则栈S的容量至少应该是3,上述过程才不会出错。

3.设有一空队列Q,经Q.EnQueue

(1),Q.DeQueue(),Q.EnQueue

(2),Q.EnQueue(3),Q.EnQueue(4),Q.DeQueue();Q.EnQueue(5)一系列操作后。

队列中从队首到队尾的元素依次是___345

4.空字符串与空格串的区别在于空格串是一个字符串,由若干空格组成;空字符串中没有字符。

5.

7.已知某二叉树的后序遍历序列是BDECA,中序遍历序列是BADCE,那么它的前序遍历序列是ABCDE。

6.写出右图所示二叉树按后序遍历的结果17,23,45,65,78,09,31,53,87。

7.写出右图所示二叉树度为1的内部结点的值09。

8.二叉树的第k层的结点数最多为____2k-1____。

9.已知完全二叉树的第4层(根结点为第1层)总共只有2个结点,则其叶子结点数是5。

10.某表达式二叉树按先序遍历的结果为+a*+bcd,令a=6,b=3,c=4,d=2,则该表达式的值等于20。

11.弗洛伊德(Floyd)算法用于求___每一对顶点之间_____的最短路径问题。

12.构造最小生成树的经典算法中,____克鲁斯卡尔(Kruskal)算法___更适用于求稀疏网的最小生成树。

13.假定一个数列{25,43,62,31,48,56},采用的散列函数为H(k)=kmod7,则元素48的同义词是__62______。

五.应用题

1.

已知关键字序列为36,31,20,32,66,48,依次将各元素插入到一棵初始为空的二叉排序树,画出对应的二叉排序树。

 

2.已知二叉树如左下图,试写出后序遍历结果。

 

 

3.现有森林如右上图,请画出对应的二叉树。

 

4.已知一颗二叉树遍历的先序序列为ABDFIGCEHJ,中序序列为BIFDGAEJHC,请画出这颗二叉树。

答案:

5.已知一颗二叉树如下图所示,将此二叉树转换为森林。

答案:

 

6.图G各顶点的连接关系及相应权值如下图所示。

(1)画出图的邻接表存储图示

(2)从顶点1开始对图进行广度优先遍历,写出遍历结果;

(3)使用Kruskal算法求该图的最小生成树,给出的形成过程。

(11分)

 

7.设Hash函数为H(K)=Kmod7,哈希表的地址空间为0,...,6,开始时哈希表为空,用平方探测法解决冲突,请画出依次插入键值9,14,10,56,30后的哈希表。

8.

在双循环链表中,写出在指针P所指结点之前插入指针S所指结点的执行语句序列;结点定义如下:

structNode{

chardata;

Node*next;

Node*back;

};

9.设右图为某树的二叉树表示,请画出该树。

10.简要说明快速排序的排序思想,并给出算法时间复杂度。

根据所给序列(49,38,65,97,76,13,27,50),设选第一个元素为支点/参考值(pivot),写出快速排序的第一趟排序的结果。

解答:

先选一个轴值(即比较的基准),通过一趟排序将待排序记录分割成独立的两部分,前一部分记录的关键码均小于或等于轴值,后一部分记录的关键码均大于或等于轴值,然后分别对这两部分重复上述方法,直到整个序列有序。

11.运用堆排序(Heapsort)方法,设初始序列为(46,88,45,39,70,58,101,10,66,34),若按教材上的算法建初始堆,画出初始堆的树状图。

12.设Hash函数为H(K)=Kmod7,哈希表的地址空间为0,...,6,开始时哈希表为空,用线性探测法解决冲突,请画出依次插入键值23,14,9,6,30,12,18后的哈希表。

13.图G各顶点的连接关系及相应权值如右图所示。

(1)画出该图的邻接距阵;

(2)并从顶点0开始对图进行广度优先遍历,写出遍历结果;(3)使用Prim算法求该图的最小生成树,画出其生成过程。

 

14.如图所示为一有向图,试求:

在邻接矩阵和(逆)邻接表存储结构下利用深度和广度优先算法遍历序列。

15.求出如图所示的AOE网中所有关键路径,请写出事件的最早发生时间和最晚发生时间、活动的最早开始时间和最晚开始时间,以及求得的关键路径(10分)。

答案:

事件

V0

V1

V2

V3

V4

V5

V6

V7

最早发生时间

0

3

4

15

8

21

19

25

最晚发生时间

0

3

5

15

8

23

19

25

活动

a0

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

a11

最早开始时间

0

0

3

3

4

8

15

15

8

21

15

19

最晚开始时间

0

1

8

3

5

8

17

15

11

23

15

19

差值

0

1

5

0

1

0

2

0

3

2

0

0

是否关键活动

关键路径有两条:

16.已知一组关键字为{25,18,46,2,53,39,32,4,74,67,60,11},按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

答案:

由已知关键字组进行构造时,是从空二叉排序树开始依次选取关键字通过查找和插入而生成出二叉排序树。

二叉排序树的生成过程如下图:

关键字25查找成功时比较1次,关键字18,46查找成功时各比较2次,关键字4,39,53查找成功时各比较3次,关键字11,32,74查找成功时各比较4次,关键字11,67查找成功时各比较5次,关键字60查找成功时比较6次,则:

ASL=(1*1+2*2+3*3+3*4+2*5+1*6)/12=42/12=3.5

17.简要说明快速排序的排序思想.根据所给序列(49,38,65,97,76,13,27,50),设选第一个元素为支点/参考值(pivot),写出快速排序的第一趟排序的结果。

Solution:

 

18.图G各顶点的连接关系及相应权值如右图所示。

(1)画出该图的邻接距阵;

(2)并从顶点0开始对图进行广度深度优先遍历,写出遍历结果;(3)使用Prim,Kruskal

算法求该图的最小生成树,画出其生成过程。

Prim算法求该图的最小生成树

19.在什么样的情况下,等长编码是最优的前缀码?

在每个字符的使用概率相同的情况下,也即在哈夫曼树中每片叶子的权重相等的时候,等长编码是最优的前缀码。

19.设右图为某树的二叉树表示,请画出该树。

(或者树到二叉树的题)

 

20.假设用于通信的电文由字符集{A,B,C,D,R}

中的字母构成,这5个字母在电文中出现的频率

依次为{40,20,10,10,20}。

请画出对应的

编码哈夫曼树(Huffman);

求出每个字符的哈夫曼编码。

四.算法设计与分析:

1.请设计求n的阶乘的递归算法与非递归算法,其中非递归算法请用栈或队列实现;

参考答案:

longFactorial1(longn){

if(n==0)return1;

elsereturnn*Factorial1(n-1);

}

longFactorial2(longn){

SeqStacksqs;

longfac=1;

if(n>0)

{

for(inti=n;i>0;i--)sqs.push(i);

while(sqs.Empty()==0)fac=fac*sqs.pop();

}

returnfac;

}

2.已知二叉树用二叉链表存储,试编写一函数实现计算该树的高度。

请定义必要的数据结构。

template

structBiNode

{

DataTypedata;

BiNode*lchild,*rchild;

};

intDepth(BiNode*root)

{

if(root==NULL)return0;

else{

hl=Depth(root->lchild);

hr=Depth(root->rchild);

returnmax(hl,hr)+1;

11.现有一棵二叉查找(排序)树(BinarySearchTree)BST,以二叉链表形式存储,进行中序遍历可得到从小到大排列的有序序列。

1)请编写一函数,对该二叉查找树进行变换,使得对新的二叉树进行中序遍历可得到从大到小排列的有序序列。

template

voidExchange(BiNode*root)

{

if(root!

=NULL){

Exchange(root->lchild);

Exchange(root->rchild);

root->lchild<-->root->rchild;

}

}

2)请用中文文字直接描述在新的二叉树上找最大元素的方法。

有关的数据结构已描述如下:

structBinary_node{//二叉树结点

intdata;

Binary_node*left;

Binary_node*right;};

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

当前位置:首页 > 自然科学 > 物理

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

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