综合练习题答案.docx
- 文档编号:30184315
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:21
- 大小:88.29KB
综合练习题答案.docx
《综合练习题答案.docx》由会员分享,可在线阅读,更多相关《综合练习题答案.docx(21页珍藏版)》请在冰豆网上搜索。
综合练习题答案
综合练习题答案
《2线性表》
一、填空。
1.在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。
2.线性表中结点的集合是有限的,结点间的关系是一对一的。
3.向一个长度为n的顺序性表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1个元素。
4.向一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动n-i个元素。
5.在顺序表中访问任意一结点的时间复杂度均为O
(1),因此,顺序表也称为随机存取的数据结构。
6.顺序表中逻辑上相邻的元素的物理位置必定相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
7.在带头结点的单链表中,每个结点的存储位置由其直接前驱结点的链域的值指示。
8.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。
二、单项选择题。
(C)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为【】。
(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构
(B)2.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是【】。
(A)110(B)108(C)100(D)120
(A)3.在n个结点的顺序表中,算法的时间复杂度是O
(1)的操作是【】。
(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
(B)在第i个结点后插入一个新结点(1≤i≤n)
(C)删除第i个结点(1≤i≤n)
(D)将n个结点从小到大排序
(B)4.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动【】个元素。
(A)8(B)63.5(C)63(D)7
(A)5.链接存储的存储结构所占存储空间【】。
分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
只有一部分,存放结点值
(C)只有一部分,存储表示结点间关系的指针
(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
(B)6.链表是一种采用【】存储结构存储的线性表。
(A)顺序(B)链式(C)星式(D)网状
(D)7.线性表若采用链式存储结构时,要求内存中可用存储单元的地址【】。
(A)必须是连续的(B)部分地址必须是连续的
(C)一定是不连续的(D)连续或不连续都可以
(B)8.线性表L在【】情况下适用于使用链式结构实现。
(A)需经常修改L中的结点值(B)需不断对L进行删除插入
(C)L中含有大量的结点(D)L中结点结构复杂
(C)9.单链表的存储密度【】。
(A)大于1;(B)等于1;(C)小于1;(D)不能确定
(B)10.设a1、a2、a3为3个结点,整数P0,3,4代表地址,则如下的链式存储结构称为【】。
P0
3
4
P0
a1
3
a2
4
A3
0
(A)循环链表(B)单链表(C)双向循环链表(D)双向链表
三、简答题。
描述以下三个概念的区别:
头指针、头结点、第一个元素结点。
在单链表中设置头结点的作用是什么?
答:
第一个结点是指链表中存储线性表中第一个数据元素a1的结点。
为了操作方便,通常在链表的第一个结点之前附设一个结点,称为头结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对第一个结点进行统一处理。
头指针是指向链表中第一个结点(或为头结点或为第一个结点)的指针。
若链表中附设头结点,则不管线性表是否为空表,头指针均不为空。
否则表示空表的链表的头指针为空。
这三个概念对单链表、双向链表和循环链表均适用。
是否设置头结点,是不同的存储结构表示同一逻辑结构的问题。
简而言之:
头指针是指向链表中第一个结点(或为头结点或为第一个结点)的指针;
头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息;
第一个结点是指链表中存储线性表中第一个数据元素a1的结点。
《3栈和队列》
一、填空题。
1.线性表、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。
2.栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。
不允许插入和删除运算的一端称为栈底。
3.队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
4.在一个循环队列中,队首指针指向队首元素的前一个位置。
5.在具有n个单元的循环队列中,队满时共有n-1个元素。
6.向栈中压入元素的操作是先移动栈顶指针,后存入元素。
7.从循环队列中删除一个元素时,其操作是先移动队首指针,后取出元素。
二、单项选择题。
(B)1.栈中元素的进出原则是【】。
A.先进先出B.后进先出C.栈空则进D.栈满则出
(C)2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为【】。
A.iB.n=iC.n-i+1D.不确定
解释:
当p1=n,即n是最先出栈的,根据栈的原理,n必定是最后入栈的,那么输入顺序必定是1,2,3,…,n,则出栈的序列是n,…,3,2,1。
(若不要求顺序出栈,则输出序列不确定)
(B)3.判定一个栈ST(最多元素为m0)为空的条件是【】。
A.ST->top!
=-1B.ST->top==-1C.ST->top!
=m0D.ST->top==m0
(D)4.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为【】。
(A)r-f;(B)(n+f-r)%n;(C)n+r-f;(D)(n+r-f)%n
三、简答题。
1.设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序。
答:
有14种。
①全进之后再出情况,只有1种:
4,3,2,1
②进3个之后再出的情况,有3种,3,4,2,13,2,4,13,2,1,4
③进2个之后再出的情况,有4种,2,4,3,12,3,4,12,1,3,42,1,4,32,1,3,4
④进1个之后再出的情况,有5种,1,4,3,21,3,2,41,3,4,21,2,3,41,2,4,3
《6树和二叉树》
一、填空。
1.由3个结点所构成的二叉树有5种形态。
2.一棵深度为6的满二叉树有n1+n2=0+n2=n0-1=31个分支结点和26-1=32个叶子。
注:
满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3.一棵具有257个结点的完全二叉树,它的深度为9。
(注:
用log2(n)+1=8.xx+1=9
4.设一棵完全二叉树有700个结点,则共有350个叶子结点。
答:
最快方法:
用叶子数=[n/2]=350
5.设一棵完全二叉树具有1000个结点,则此完全二叉树有500个叶子结点,有499个度为2的结点,有1个结点只有非空左子树,有0个结点只有非空右子树。
答:
最快方法:
用叶子数=[n/2]=500,n2=n0-1=499。
另外,最后一结点为2i属于左叶子,右叶子是空的,所以有1个非空左子树。
完全二叉树的特点决定不可能有左空右不空的情况,所以非空右子树数=0.
6.一棵含有n个结点的k叉树,可能达到的最大深度为n,最小深度为2。
答:
当k=1(单叉树)时应该最深,深度=n(层);当k=n-1(n-1叉树)时应该最浅,深度=2(层),但不包括n=0或1时的特例情况。
7.二叉树的基本组成部分是:
根(N)、左子树(L)和右子树(R)。
因而二叉树的遍历次序有六种。
最常用的是三种:
前序法,后序法和中序法。
这三种方法相互之间有关联。
若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是FEGHDCB。
8.用5个权值{3,2,4,5,1}构造的哈夫曼(Huffman)树的带权路径长度是33。
解:
先构造哈夫曼树,得到各叶子的路径长度之后便可求出WPL=(4+5+3)×2+(1+2)×3=33
(15)
(9)(6)(注:
两个合并值先后不同会导致编码不同,即哈夫曼编码不唯一)
453(3)(注:
合并值应排在叶子值之后)
12
二、单项选择题。
(C)1.不含任何结点的空树。
(A)是一棵树;(B)是一棵二叉树;
(C)是一棵树也是一棵二叉树;(D)既不是树也不是二叉树
(C)2.二叉树是非线性数据结构,所以。
(A)它不能用顺序存储结构存储;(B)它不能用链式存储结构存储;
(C)顺序存储结构和链式存储结构都能存储;(D)顺序存储结构和链式存储结构都不能使用
(C)3.具有n(n>0)个结点的完全二叉树的深度为。
(A)log2(n)(B)log2(n)(C)log2(n)+1(D)log2(n)+1
注1:
x表示不小于x的最小整数;x表示不大于x的最大整数,它们与[]含义不同!
注2:
选(A)是错误的。
例如当n为2的整数幂时就会少算一层。
(A)4.把一棵树转换为二叉树后,这棵二叉树的形态是。
(A)唯一的(B)有多种
(C)有多种,但根结点都没有左孩子(D)有多种,但根结点都没有右孩子
5.树是结点的有限集合,它A根结点,记为T。
其余的结点分成为m(m≥0)个B
的集合T1,T2,…,Tm,每个集合又都是树,此时结点T称为Ti的父结点,Ti称为T的子结点(1≤i≤m)。
一个结点的子结点个数为该结点的C。
供选择的答案
A:
①有0个或1个②有0个或多个③有且只有1个④有1个或1个以上
B:
①互不相交②允许相交③允许叶结点相交④允许树枝结点相交
C:
①权②维数③度④序
答案:
ABC=1,1,3
6.二叉树A。
在完全的二叉树中,若一个结点没有B,则它必定是叶结点。
每棵树都能惟一地转换成与它对应的二叉树。
由树转换成的二叉树里,一个结点N的左子女是N在原树里对应结点的C,而N的右子女是它在原树里对应结点的D。
供选择的答案
A:
①是特殊的树②不是树的特殊形式③是两棵树的总称④有是只有二个根结点的树形结构
B:
①左子结点②右子结点③左子结点或者没有右子结点④兄弟
C~D:
①最左子结点②最右子结点③最邻近的右兄弟④最邻近的左兄弟
⑤最左的兄弟⑥最右的兄弟
答案:
ABCD=2,1,1,3
三、简答题。
1.试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。
答:
DLR:
ABDFJGKCEHILM
LDR:
BFJDGKACHELIM
LRD:
JFKGDBHLMIECA
2.把如图所示的树转化成二叉树。
答:
注意全部兄弟之间都要连线(包括度为2的兄弟),并注意原有连线结点一律归入左子树,新添连线结点一律归入右子树。
A
B
EC
KFHD
LGI
MJ
3.假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
试为这8个字母设计哈夫曼编码。
使用0~7的二进制表示形式是另一种编码方案。
对于上述实例,比较两种方案的优缺点。
解:
方案1:
哈夫曼编码先将概率放大100倍,以方便构造哈夫曼树。
w={7,19,2,6,32,3,21,10}
方案比较:
字母编号
对应编码
出现频率
1
1010
0.07
2
00
0.19
3
10000
0.02
4
1001
0.06
5
11
0.32
6
10001
0.03
7
01
0.21
8
1011
0.10
字母编号
对应编码
出现频率
1
000
0.07
2
001
0.19
3
010
0.02
4
011
0.06
5
100
0.32
6
101
0.03
7
110
0.21
8
111
0.10
方案1的WPL=2(0.19+0.32+0.21)+4(0.07+0.06+0.10)+5(0.02+0.03)=1.44+0.92+0.25=2.61
方案2的WPL=3(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3
结论:
哈夫曼编码优于等长二进制编码。
《7图》
一、填空题。
1.图有邻接矩阵、邻接表等存储结构,遍历图有深度优先遍历、广度优先遍历等方法。
2.有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的出度。
3.如果n个顶点的图是一个环,则它有n棵生成树。
(以任意一顶点为起点,得到n-1条边)
4.n个顶点e条边的图,若采用邻接矩阵存储,则空间复杂度为O(n2)。
5.n个顶点e条边的图,若采用邻接表存储,则空间复杂度为O(n+e)。
6.设有一稀疏图G,则G采用邻接表存储较省空间。
7.设有一稠密图G,则G采用邻接矩阵存储较省空间。
8.图的逆邻接表存储结构只适用于有向图。
9.已知一个图的邻接矩阵表示,删除所有从第i个顶点出发的方法是将邻接矩阵的第i行全部置0。
10.图的深度优先遍历序列不是惟一的。
11.n个顶点e条边的图采用邻接矩阵存储,深度优先遍历算法的时间复杂度为O(n2);若采用邻接表存储时,该算法的时间复杂度为O(n+e)。
12.n个顶点e条边的图采用邻接矩阵存储,广度优先遍历算法的时间复杂度为O(n2);若采用邻接表存储,该算法的时间复杂度为O(n+e)。
13.用普里姆(Prim)算法求具有n个顶点e条边的图的最小生成树的时间复杂度为O(n2)。
14.若要求一个稀疏图G的最小生成树,最好用克鲁斯卡尔(Kruskal)算法来求解。
15.若要求一个稠密图G的最小生成树,最好用普里姆(Prim)算法来求解。
16.用Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度递增的次序来得到最短路径的。
17.拓扑排序算法是通过重复选择具有0个前驱顶点的过程来完成的。
二、简答题。
1.已知二维数组表示的图的邻接矩阵如下图所示。
试分别画出自顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。
2.试利用Dijkstra算法求图中从顶点a到其他各顶点间的最短路径,写出执行算法过程中各步的状态。
解:
b
c
d
e
f
g
S[]
D[]
P[]
S[]
D[]
P[]
S[]
D[]
P[]
S[]
D[]
P[]
S[]
D[]
P[]
S[]
D[]
P[]
A
0
15
0
0
2
0
0
12
0
0
∞
-1
0
∞
-1
0
∞
-1
c
0
15
0
1
2
0
0
12
0
0
10
2
0
6
2
0
∞
-1
f
0
15
0
1
2
0
0
11
5
0
10
2
1
6
2
0
16
5
e
0
15
0
1
2
0
0
11
5
1
10
2
1
6
2
0
16
5
d
0
15
0
1
2
0
1
11
5
1
10
2
1
6
2
0
14
3
g
0
15
0
1
2
0
1
11
5
1
10
2
1
6
2
1
14
3
a->b:
15
a->c:
2
a->c->f->d:
11
a->c->e:
10
a->c->f:
6
a->c->f->d:
14
《8查找》
一、单项选择题。
(B)1.在表长为n的链表中进行线性查找,它的平均查找长度为【】。
A.ASL=n;B.ASL=(n+1)/2;
C.ASL=
+1;D.ASL≈log2(n+1)-1
(A)2.折半查找有序表(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
(C)3.对22个记录的有序表作折半查找,当查找失败时,至少需要比较次关键字。
A.3B.4C.5D.6
(A)4.链表适用于查找。
A.顺序B.二分法C.顺序,也能二分法D.随机
(C)5.折半搜索与二叉搜索树的时间性能【】。
A.相同B.完全不同C.有时不相同D.数量级都是O(log2n)
6.要进行线性查找,则线性表A;要进行二分查找,则线性表B;要进行散列查找,则线性表C。
某顺序存储的表格,其中有90000个元素,已按关键项的值的上升顺序排列。
现假定对各个元素进行查找的概率是相同的,并且各个元素的关键项的值皆不相同。
当用顺序查找法查找时,平均比较次数约为D,最大比较次数为E。
供选择的答案:
A~C:
①必须以顺序方式存储②必须以链表方式存储③必须以散列方式存储
④既可以以顺序方式,也可以以链表方式存储
⑤必须以顺序方式存储且数据元素已按值递增或递减的次序排好
⑥必须以链表方式存储且数据元素已按值递增或递减的次序排好
D,E:
①25000②30000③45000④90000
答案:
A=④B=⑤C=③D=③E=④
7.数据结构反映了数据元素之间的结构关系。
链表是一种A,它对于数据元素的插入和删除B。
通常查找线性表数据元素的方法有C和D两种方法,其中C是一种只适合于顺序存储结构但E的方法;而D是一种对顺序和链式存储结构均适用的方法。
供选择的答案:
A:
①顺序存储线性表②非顺序存储非线性表③顺序存储非线性表④非顺序存储线性表
B:
①不需要移动结点,不需改变结点指针②不需要移动结点,只需改变结点指针
③只需移动结点,不需改变结点指针④既需移动结点,又需改变结点指针
C:
①顺序查找②循环查找③条件查找④二分法查找
D:
①顺序查找②随机查找③二分法查找④分块查找
E:
①效率较低的线性查找②效率较低的非线性查找
③效率较高的非线性查找④效率较高的线性查找
答案:
A=④B=②C=④D=①E=③
8.在二叉排序树中,每个结点的关键码值A,B一棵二叉排序,即可得到排序序列。
同一个结点集合,可用不同的二叉排序树表示,人们把平均检索长度最短的二叉排序树称作最佳二叉排序,最佳二叉排序树在结构上的特点是C。
供选择的答案:
A:
①比左子树所有结点的关键码值大,比右子树所有结点的关键码值小
②比左子树所有结点的关键码值小,比右子树所有结点的关键码值大
③比左右子树的所有结点的关键码值都大
④与左子树所有结点的关键码值和右子树所有结点的关键码值无必然的大小关系
B:
①前序遍历②中序(对称)遍历③后序遍历④层次遍历
C:
①除最下二层可以不满外,其余都是充满的②除最下一层可以不满外,其余都是充满的
③每个结点的左右子树的高度之差的绝对值不大于1④最下层的叶子必须在最左边
答案:
A=①B=②C=③
9.散列法存储的基本思想是根据A来决定B,碰撞(冲突)指的是C,处理碰撞的两类主要方法是D。
供选择的答案:
A,B:
①存储地址②元素的符号③元素个数④关键码值
⑤非码属性⑥平均检索长度⑦负载因子⑧散列表空间
C:
①两个元素具有相同序号②两个元素的关键码值不同,而非码属性相同
③不同关键码值对应到相同的存储地址④负载因子过大⑤数据元素过多
D:
①线性探查法和双散列函数法②建溢出区法和不建溢出区法
③除余法和折叠法④拉链法和开地址法
答案:
A=④B=①C=③D=④
二、简答题。
1.假定对有序表:
(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:
(1)画出描述折半查找过程的判定树;
(2)若查找元素54,需依次与哪些元素比较?
(3)若查找元素90,需依次与哪些元素比较?
(4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。
解:
(1)先画出判定树如下(注:
mid=(1+12)/2=6):
30
563
374287
424547295
(2)查找元素54,需依次与30,63,42,54等元素比较;
(3)查找元素90,需依次与30,63,87,95,72等元素比较;
(4)求ASL之前,需要统计每个元素的查找次数。
判定树的前3层共查找1+2×2+4×3=17次;
但最后一层未满,不能用8×4,只能用5×4=20次,
所以ASL=1/12(17+20)=37/12≈3.08
2.设哈希(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)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
解:
(1)画表如下:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
32
17
63
49
24
40
10
30
31
46
47
(2)查找63,首先要与H(6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 练习题 答案