数据结构复习题Word格式.docx
- 文档编号:17073662
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:15
- 大小:37.77KB
数据结构复习题Word格式.docx
《数据结构复习题Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构复习题Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
25.设一棵完全二叉树有700个结点,则共有个叶子结点。
26.一棵二叉树的第i(i≥1)层最多有个结点;
一棵有n(n>
0)个结点的满二叉树共有个叶子结点和个非终端结点。
27.深度为k的二叉树中,所含叶子的个数最多为。
28.在具有n个结点的二叉链表中,共有个指针域,其中个指针域用于指向其左右孩子,剩下的个指针域则是空的。
29.图的存储结构主要有两种,分别是、等存储结构,遍历图有、等方法。
30.有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的。
31.设有一稀疏图G,则G采用存储较省空间。
32.设有一稠密图G,则G采用存储较省空间。
33.设无向图G中顶点数为n,则图G至少有条边,至多有条边;
若G为有向图,则至少有条边,至多有条边。
34.图的深度优先遍历类似于树的编历,它所用到的数据结构是;
图的广度优先遍历类似于树的遍历,它所用到的数据结构是。
35.数据的存放无规律而言的线性表中进行检索的最佳方法是。
36.假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;
比较两次查找成功的结点数为;
比较四次查找成功的结点数为;
平均查找长度为。
37.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素比较大小。
38.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是。
39.散列法存储的基本思想是由决定数据的存储地址。
40.大多数排序算法都有两个基本的操作:
和。
41.在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置至少需比较次。
42.在插入和选择排序中,若初始数据基本正序,则选用;
若初始数据基本反序,则选用。
43.在堆排序和快速排序中,若初始记录接近正序或反序,则选用;
若初始记录基本无序,则最好选用。
44.对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是。
若对其进行快速排序,在最坏的情况下所需要的时间是。
45.对于n个记录的集合进行归并排序,所需要的平均时间是,所需要的附加空间是。
46.设要将序列(Q,H,C,Y,P,A,M,S,R,D,F,X)中的关键码按字母序的升序重新排列,则:
冒泡排序一趟扫描的结果是;
初始步长为4的希尔(shell)排序一趟的结果是;
二路归并排序一趟扫描的结果是;
快速排序一趟扫描的结果是;
堆排序初始建堆的结果是。
二、单项选择题
1.图形结构是数据元素之间存在一种()。
A.一对多关系B.多对多关系C.多对一关系D.一对一关系
2.数据结构中,与所使用的计算机无关的是数据的()结构。
A.存储B.物理C.逻辑D.物理和存储
3.算法分析的目的是()。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进D.分析算法的易懂性和文档性
4.算法分析的两个主要方面是()。
A.空间复杂性和时间复杂性B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
5.计算机算法指的是()。
A.计算方法B.数据处理方法
C.对特定问题求解步骤的一种描述,是指令的有限序列D.计算机程序
6.顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A.线性结构B.非线性结构C.存储位置D.指针
7.链接存储结构中的数据元素之间的逻辑关系是由()表示的。
8.数据在计算机存储器内存储时,物理地址与逻辑地址相同并且是连续的,称之为()。
A.存储结构B.逻辑结构C.顺序存储结构D.链接存储结构
9.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素
A.8B.63.5C.63D.7
10.链接存储的存储结构所占存储空间()。
A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B.只有一部分,存放结点值
C.只有一部分,存储表示结点间关系的指针
D.分两部分,一部分存放结点值,另一部分存放结点所占单元数
11.链表是一种采用()存储结构存储的线性表;
A.顺序B.链接C.星式D.网状
12.线性表若采用链式存储结构时,要求内存中可用存储单元的地址:
A.必须是连续的B.连续或不连续都可以
C.部分地址必须是连续的D.一定是不连续的
13.线性表L在()情况下适用于使用链式结构实现。
A.需经常修改L中的结点值B.需不断对L进行删除插入
C.L中含有大量的结点D.L中结点结构复杂
14.单链表的存储密度
A.大于1B.等于1C.小于1D.不能确定
15.线性表的链接存储结构是一种()的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取
16.链表不具有的特点是()。
A.可随机访问任一元素B.插入、删除不需要移动元素
C.不必事先估计存储空间D.所需空间与线性表长度成正比
17.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为()。
A.r-fB.(n+f-r)%n;
C.n+r-f;
D.(n+r-f)%n
18.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()。
A.iB.n=iC.n-i+1D.不确定
19.串是一种特殊的线性表,其特殊性体现在:
A.可以顺序存储B.数据元素是一个字符
C.可以链式存储D.数据元素可以是多个字符
20.设有两个串p和q,求q在p中首次出现的位置的运算称作()。
A.连接B.模式匹配C.求子串D.求串长
21.假设有60行70列的二维数组a[1…60,1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为()。
(无第0行第0列元素)
A.16902B.16904C.14454D.答案A,B,C均不对
答:
(57列×
60行+31行)×
2字节+10000=16902
22.不含任何结点的空树()。
A.是一棵树B.是一棵二叉树
C.是一棵树也是一棵二叉树
D.既不是树也不是二叉树
23.二叉树是非线性数据结构,所以()。
A.它不能用顺序存储结构存储
B.它不能用链式存储结构存储
C.顺序存储结构和链式存储结构都能存储
D.顺序存储结构和链式存储结构都不能使用
24.具有n(n>
0)个结点的完全二叉树的深度为()。
A.log2(n)B.log2(n)C.log2(n)+1D.log2(n)+1
25.把一棵树转换为二叉树后,这棵二叉树的形态是()。
A.唯一的B.有多种C.有多种,但根结点都没有左孩子
D.有多种,但根结点都没有右孩子
26.二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点B.高度等于其结点数
C.任一结点无左孩子D.任一结点无右孩子
27.讨论树、森林和二叉树的关系,目的是为了()。
A借助二叉树上的运算方法去实现对树的一些运算
B将树、森林按二叉树的存储方式进行存储并利用二叉树的算法解决树的有关问题
C将树、森林转换成二叉树
D体现一种技巧,没有什么实际意义
28.一个高度为h的满二叉树共有n个结点,其中有m个叶子结点,则有()成立。
An=h+mBh+m=2nCm=h-1Dn=2m-1
29.在一个图中,所有顶点的度数之和等于图的边数的()倍。
A.1/2B.1C.2D.4
30.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。
31.有8个结点的无向图最多有()条边。
A.14B.28C.56D.112
32.有8个结点的无向连通图最少有()条边。
A.5B.6C.7D.8
33.有8个结点的有向完全图有()条边。
34.用邻接表表示图进行广度优先遍历时,通常是采用()来实现算法的。
A.栈B.队列C.树D.图
35.无向图的邻接矩阵是一个(),有向图的邻接矩阵是一个()。
A.上三角矩阵B.下三角矩阵C.对称矩阵D.无规律
36.在表长为n的链表中进行线性查找,它的平均查找长度为()。
A.ASL=n;
B.ASL=(n+1)/2;
C.ASL=
+1;
D.ASL≈log2(n+1)-1
37.折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
若查找表中元素58,则它将依次与表中()比较大小,查找结果是失败。
A.20,70,30,50B.30,88,70,50C.20,50D.30,88,50
38.对22个记录的有序表作折半查找,当查找失败时,至少需要比较()次关键字。
A.3B.4C.5D.6
39.链表适用于()。
查找
A.顺序B.折半查找C.顺序和折半查找D.随机
40.将5个不同的数据进行排序,至多需要比较()。
次。
A.8B.9C.10D.25
41.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为()。
A.希尔排序B.冒泡排序C.插入排序D.选择排序
42.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法称为()。
A.希尔排序B.归并排序C.插入排序D.选择排序
43.对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。
()。
A.从小到大排列好的B.从大到小排列好的
C.元素无序D.元素基本有序
44.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为()。
A.n+1B.nC.n-1D.n(n-1)/2
45.快速排序在下列哪种情况下最易发挥其长处。
A.被排序的数据中含有多个相同排序码B.被排序的数据已基本有序
C.被排序的数据完全无序D.被排序的数据中的最大值和最小值相差悬殊
46.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是()。
A.O(n)B.O(n2)C.O(nlog2n)D.O(n3)
47.若一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。
A.38,40,46,56,79,84B.40,38,46,79,56,84
C.40,38,46,56,79,84D.40,38,46,84,56,79
48.下列关键字序列中,()。
是堆。
A.16,72,31,23,94,53B.94,23,31,72,16,53
C.16,53,23,94,31,72D.16,23,53,31,94,72
49.堆是一种()排序。
A.插入B.选择C.交换D.归并
50.堆的形状是一棵C
A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树
51.若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为()。
A.79,46,56,38,40,84B.84,79,56,38,40,46
C.84,79,56,46,40,38D.84,56,79,40,46,38
52.下述几种排序方法中,要求内存最大的是()。
A.插入排序B.快速排序C.归并排序D.选择排序
三、应用题
1、已知二叉树的前序和中序序列分别为ABDFJGKCE和BFJDGKACE,试构造该二叉树,并写出它的后序序列。
2、试写出如图所示的二叉树分别按前序、中序、后序遍历时得到的结点序列。
3.已知二叉树的中序和后序序列分别为CBEDAFIGH和CEDBIFHGA,试构造该二叉树,并写出该树的前序序列。
4.对给定的一组权值W={5,2,9,11,8,3,7},试构造相应的哈夫曼树,并计算它的带权路径长度。
5.已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。
6、已知某字符串中共有8种字符abcdefgh,每种字符出现的次数分别为(9,2,5,1,8,3,7,15),试为这8个字符设计哈夫曼编码。
请先画出构造的哈夫曼树(要求树中左孩子结点的权值小于右孩子结点的权值),然后分别写出每个字符对应的编码。
7.把如图所示的树转化成二叉树。
8.画出和下列二叉树相应的森林。
9.在一棵空的二叉排序树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4,请画出所得到的二叉排序树,并求查找成功时的平均查找长度。
10.假定对有序表:
(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:
(1)画出描述折半查找过程的判定树;
(2)若查找元素54,需依次与哪些元素比较?
(3)若查找元素90,需依次与哪些元素比较?
(4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。
11.设哈希(Hash)表的地址范围为0~17,哈希函数为:
H(K)=K%16。
K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:
(10,24,32,17,31,30,46,47,40,63,49)
造出Hash表,试回答下列问题:
(1)画出哈希表的示意图;
(2)若查找关键字63,需要依次与哪些关键字进行比较?
(3)若查找关键字60,需要依次与哪些关键字比较?
(4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
12、选取散列函数H(key)=(key)%13,用线性探测法处理冲突,对关键码序列39,08,46,22,41,53,23,31,66,25构造一个散列地址空间为0~12,表长为13的散列表,并求查找成功时的平均查找长度。
13.选取散列函数H(key)=(key)%11,用线性探测法处理冲突,对关键码序列22,41,53,08,46,30,01,31,66,构造一个散列地址空间为0~10,表长为11的散列表,并求查找成功时的平均查找长度。
14.设哈希函数H(K)=k%11,给定键值序列为69,72,78,10,26,38,43,55,哈希表长度为11,采用拉链法处理冲突,试构造散列表,并计算查找成功时的平均查找长度。
15.应用希尔排序算法从小到大进行排序,键值序列为908,17,512,503,170,897,275,653,426,增量序列为{5,3,1},试写出每趟排序的结果。
16.应用希尔排序算法,对键值序列45,93,34,49,57,65,37,51,13,7从小到大进行排序,试写出每趟排序的结果。
(增量序列为:
531)
17、应用希尔排序算法从小到大进行排序,键值序列为56,31,75,12,93,86,74,69,6,38,增量序列为{5,3,1},试写出每趟排序的结果。
18.应用希尔排序算法,对键值序列9,57,95,37,51,13,7,85,93,34从小到大进行排序,试写出每趟排序的结果。
四、程序理解题
1.写出下列程序段的输出结果,简述算法的功能
voidmain()
{
SeqStack<
int>
S;
intd;
CirQueue<
Q;
Q.EnQueue
(1);
Q.EnQueue
(2);
Q.EnQueue(3);
Q.EnQueue(4);
Q.EnQueue(5);
while(!
Q.Empty())
{
d=Q.DeQueue();
S.Push(d);
}
S.Empty())
d=S.Pop();
Q.EnQueue(d);
cout<
<
d;
}
2.写出下列程序段的输出结果
char>
Q;
charx='
e'
y='
c'
;
Q.EnQueue('
h'
);
r'
Q.EnQueue(y);
x=Q.DeQueue();
Q.EnQueue(x);
a'
y=Q.DeQueue();
y;
cout<
x<
endl;
3、在操作序列push
(1)、push
(2)、pop、push(5)、push(7)、pop、push(6)之后,栈顶元素、栈底元素、栈中元素分别是什么?
(push(k)表示整数k入栈,pop表示栈顶元素出栈。
),
4、在操作序列EnQueue
(1)、EnQueue(3)、DeQueue、EnQueue(5)、EnQueue(7)、DeQueue、EnQueue(9)之后,队头元素和队尾元素分别是什么?
(EnQueue(k)表示整数k入队,DeQueue表示队头元素出队)。
5、算法理解题(每空2分,共4分)
[程序说明]
下面的函数实现把十进制整数a转换为d(2~9)进制整数并输出,试补全程序。
提示:
使用栈实现
[程序]
voidDec_to_Ocx(inta,intd)
{
intdiv,x;
s;
while(a!
=0)
div=a%d;
;
a=a/d;
while()
x=s.Pop();
x;
五、算法设计题
1、试编写一算法,求不带头结点单链表的长度。
template<
classT>
structnode//单链表的结点结构
Tdata;
structnode*next;
};
intLinkList:
:
length(node*first)//first为不带头结点单链表的头指针
2.试编写一算法,求带头结点单链表的长度。
intdata;
intlength(structnode*first)//first为带头结点单链表的头指针
}
3、设一棵二叉树T以二叉链表为存储结构,试编写一个函数,求二叉树中结点个数。
structbinode
{Tdata;
binode<
T>
*lchild,*rchild;
4.设计算法求二叉树的叶子结点个数。
structBiNode//二叉树的结点结构
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习题