1、大数据结构本科期末综合练习二填空与判断题数据结构(本科)期末综合练习二(填空与判断题)填空题1. 数据是_信息_的载体,它能够被计算机程序识别、存储和加工处理。2. 数据结构包括逻辑结构、_存储结构_和数据的运算三个方面。3. 数据结构的逻辑结构包括线性结构和_非线性_结构两大类。4. 数据结构的存储结构包括顺序、_链接_、索引和散列等四种。5. 基本数据类型是计算机已经实现了的_数据结构_。6. 抽象数据类型的特点是_数据封装_、信息隐蔽、使用与实现分离。7. 算法的一个特性是_有穷性_,即算法必须执行有限步就结束。8. 面向对象的特征应包括对象、类、_继承_、消息通信。9. 属性与服务相同
2、的对象构成类,类中的每个对象称为该类的_实例_。10. 对象的私有状态只能通过该对象的_操作(或服务)_才能改变。11. 模板类是一种数据抽象,它把_数据类型_当作参数,可以实现类的复用。12. 在类的继承结构中,位于上层的类叫做基类,其下层的类则叫做_派生(或子)_类。13. 一维数组所占用的空间是连续的。但数组元素不一定顺序存取,通常是按元素的_下标(或顺序号)_存取的。14. 在程序运行过程中不能扩充的数组是_ 静态_分配的数组。这种数组在声明它时必须指定它的大小。15. 在程序运行过程中可以扩充的数组是_ 动态_分配的数组。这种数组在声明它时需要使用数组指针。16. 二维数组是一种非线
3、性结构,其中的每一个数组元素最多有_两个_个直接前驱(或直接后继)。17. 若设一个n n的矩阵A的开始存储地址LOC(0, 0) 及元素所占存储单元数d已知,按行存储时其任意一个矩阵元素aij的存储地址为_ LOC(0,0)+(i*n+j)*d_。18. 对称矩阵的行数与列数_相等 _且以主对角线为对称轴,aij = aji,因此只存储它的上三角部分或下三角部分即可。19. 将一个n阶对称矩阵的上三角部分或下三角部分压缩存放于一个一维数组中,则一维数组需要存储_n(n+1)/2 _个矩阵元素。20. 将一个n阶对称矩阵A的上三角部分按行压缩存放于一个一维数组B中,A00存放于B0中,则AIJ
4、在IJ时将存放于数组B的_(2n-I-1)*I/2+J_位置。21. 利用三元组表存放稀疏矩阵中的非零元素,则在三元组表中每个三元组元素对应一个非零元素的行号、列号和_值_。22. 线性表是由n(n0)个_数据元素_组成的有限序列。23. 若设串S = “documentHash.doc0”,则该字符串S的长度为_16_。24. 链表是一种采用 链式(或链接) 存储结构存储的线性表。25. 链表只适用于 顺序 查找。26. 在链表中进行插入和 删除 操作的效率比在顺序存储结构中进行相同操作的效率高。27. 链表对于数据元素的插入和删除不需要移动结点,只需要改变相应结点的_指针域_的值。28.
5、链接存储表示的结点存储空间一般在程序的运行过程中进行动态地_分配_和释放。29. 单链表中逻辑上相邻的结点而在物理位置上_不一定_相邻。30. 在单链表中, 除了表头结点外, 任意结点的存储位置由其直接_前驱_结点的指针域的值所指示。31. 在单链表设置表头结点的作用是插入和删除表中第一个元素时不必对_表头指针_进行特殊处理。32. 若设L是指向带表头的单链表, 语句 L-link=L-link-link的作用是_删除_单链表中的第一个结点。33. 在双向链表中, 每个结点除了数据域外, 还有两个指针域, 它们分别指向_前趋结点和后继结点_。34. 线性表的链接存储只能通过_链接指针_顺序访问
6、。35. 链表与顺序表、索引表、散列表等都是数据逻辑结构的_存储_表示。36. 设双向循环链表每个结点结构为(data,llink,rlink),则结点*p的前驱结点的地址为_p-llink_。37. 栈是一种限定在表的一端进行插入和删除的线性表,又被称为_后出先进_表。38. 队列是一种限定在表的一端插入,在另一端删除的线性表,它又被称为_先进先出_表。39. 向一个链式栈插入一个新结点时,首先把栈顶指针的值赋给新结点的指针域,然后把新结点的存储位置赋给_栈顶指针_。40. 队列的删除操作在_队头(或队首)_进行。41. 向一个顺序栈插入一个元素时,首先使_栈顶指针_后移一个位置,然后把待插
7、入元素写入到这个位置上。42. 若设顺序栈的最大容量为MaxSize,top=-1表示栈空,则判断栈满的条件是_top=MaxSize-1_。43. 当用长度为MaxSize的数组顺序存储一个栈时,若用top = MaxSize表示栈空,则表示栈满的条件为_top = 0 _。44. 向一个循环队列中插入元素时,需要首先移动_队尾_指针,然后再向所指位置写入新元素。45. 向一个栈顶指针为top的链式栈中插入一个新结点*p时,应执行_p-link=top_和top=p操作。46. 在一个链式队列中,若队头指针与队尾指针的值相同,则表示该队列至多有_1_个结点。47. 在一个链式队列中,若队头指
8、针与队尾指针的值相同,则表示该队列至多有_ 一_个结点。48. 如果一个对象部分地包含自己,或自己定义自己,则称这个对象是_递归_的对象。49. 如果一个过程直接或间接地调用自己,则称这个过程是一个_递归_的过程。50. 递归工作栈起到两个作用,其一是将递归调用时的实际参数和返回地址传递给下一层递归;其二是保存本层的形式参数和_局部变量_。51. 函数内部的局部变量是在进入函数过程后才分配存储空间,在函数过程执行结束后就_释放_局部变量所占用的存储空间。52. 迷宫问题是一个回溯控制的问题,最好使用_递归_的方法来解决。53. 非空广义表的除第一个元素外其他元素组成的表称为广义表的_表尾_。5
9、4. 广义表A ( (a, b, c), (d, e, f ) ) 的表尾为_( (d, e, f ) ) _。55. 广义表是一种递归的数据结构,子表结点则指示下一层广义表的_表头结点_。56. 广义表的深度定义为广义表括号的_重数_。57. 对于一棵具有n个结点的树,该树中所有结点的度数之和为_n-1_。 58. 一棵树的广义表表示为a(b(c,d(e,f),g(h),i(j,k(x,y),结点k的所有祖先的结点数为_2_个。 59. 一棵树的广义表表示为a(b(c,d(e,f),g(h),i(j,k(x,y),结点f的层数为_3 _。假定树根结点的层数为0。 60. 假定一棵三叉树(即度
10、为3的树)的结点个数为50,则它的最小高度为_ 4 _。假定树根结点的深度为0。 61. 在一棵高度为3的四叉树中,最多含有_85_个结点,假定树根结点的高度为0。 62. 在一棵三叉树中,度为3的结点数有2个,度为2的结点数有1个,度为1的结点数为2个,那么度为0的结点数有_6_个。 63. 一棵高度为5的完全二叉树中,最多包含有_ 63 _个结点。假定树根结点的高度为0。 64. 假定一棵树的广义表表示为A(B(C,D(E,F,G),H(I,J),则该树的高度为_3_。假定树根结点的高度为0。 65. 在一棵二叉树中,假定双分支结点数为5个,单分支结点数为6个,则叶子结点数为_ 6 _个。
11、 66. 假定一棵二叉树的结点数为18,则它的最小高度为_4_。假定树根结点的高度为0。 67. 在一棵高度为h的理想平衡二叉树中,最少含有_ 2h _个结点。假定树根结点的高度为0。 68. 在一棵高度为h的理想平衡二叉树中,最多含有_2h+1-1_个结点。假定树根结点的高度为0。 69. 若将一棵树A(B(C,D,E),F(G(H),I)按照左子女-右兄弟表示法转换为二叉树,该二叉树中度为2的结点的个数为_2_个。 70. 将一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有_右_子女。 71. 在一个堆的顺序存储中,若一个元素的下标为i(0in-1),则它的左
12、子女元素的下标为_2i+1_。 72. 在一个堆的顺序存储中,若一个元素的下标为i(0in-1),则它的右子女元素的下标为_2i+2_。 73. 在一个最小堆中,堆顶结点的值是所有结点中的_ 最小值_。74. 在一个最大堆中,堆顶结点的值是所有结点中的_最大值_。 75. 以顺序搜索方法从长度为n的顺序表或单链表中搜索一个元素的渐进时间复杂度为_ O(n)_。 76. 对长度为n的搜索表进行搜索时,假定搜索第i个元素的概率为pi,搜索长度(即在搜索过程中依次同有关元素比较的总次数)为ci,则在搜索成功情况下的平均搜索长度的计算公式为_。 77. 假定一个顺序表的长度为40,并假定顺序搜索每个元
13、素的概率都相同,则在搜索成功情况下的平均搜索长度为_20.5_。 78. 从有序表(12,18,30,43,56,78,82,95)中折半搜索元素56时,其搜索长度为_3_。 79. 假定对长度n=50的有序表进行折半搜索,则对应的判定树中最底下一层的结点数为_19_个。 80. 从一棵二叉搜索树中搜索一个元素时,若给定值大于根结点的值,则需要向_右子树_继续搜索。 81. 向一棵二叉搜索树中插入一个元素时,若元素的值小于根结点的值,则应把它插入到根结点的_左子树_上。 82. 根据n个元素建立一棵二叉搜索树的渐进时间复杂度大致为_O(nlog2n)_。 83. 在一棵AVL树中,每个结点的左
14、子树高度与右子树高度之差的绝对值不超过_1_。 84. 根据一组记录(56,42,50,64,48)依次插入结点生成一棵AVL树时,当插入到值为_50_的结点时需要进行旋转调整。 85. 根据一组记录(56,74,63,64,48)依次插入结点生成一棵AVL树时,当插入到值为63的结点时需要进行_先右后左双旋转_调整。 86. 根据一组记录(56,42,38,64,48)依次插入结点生成一棵AVL树时,当插入到值为38的结点时需要进行_右单旋转_调整。 87. 根据一组记录(56,42,73,50,64,48,22)依次插入结点生成一棵AVL树时,当插入到值为_ 64 _的结点时才出现不平衡,
15、需要进行旋转调整。 88. 在一棵具有n个结点的AVL树上进行插入或删除元素的渐进时间复杂度大致为_O(log2n)_。89. n (n0) 个顶点的连通无向图各顶点的度之和最少为_2(n-1)_。90. 用邻接矩阵存储图,占用的存储空间与图中的_顶点_数有关。91. 设图G = (V, E),V = V0, V1, V2, V3, E = (V0, V1), (V0, V2), (V0, V3), (V1, V3),则从顶点V0开始的图G的不同深度优先序列有_4 _种。92. 设图G = (V, E),V = 1, 2, 3, 4, E = , , , ,从顶点1出发,对图G进行广度优先搜索
16、的序列有_2 _种。93. n (n0) 个顶点的无向图中顶点的度的最大值为_ n-1 _。94. 在重连通图中每个顶点的度至少为_2 _。95. n个顶点的连通无向图的生成树含有_n-1_条边。96. 11个顶点的连通网络N有10条边,其中权值为1, 2, 3, 4, 5的边各2条,则网络N的最小生成树各边的权值之和为_30_。97. 在使用Kruskal算法构造连通网络的最小生成树时,只有当一条候选边的两个端点不在同一个_连通分量_上,才会被加入到生成树中。98. 一般来说,深度优先生成树的高度比广度优先生成树的高度要_高_。99. 求解带权连通图最小生成树的Prim算法使用图的_邻接矩阵
17、_作为存储结构。100. 设图的顶点数为n,则求解最短路径的Dijkstra算法的时间复杂度为_O(n2)_。 101. 第i (i = 1, 2, , n-1) 趟从参加排序的序列中取出第i个元素,把它插入到由第0个至第i-1个元素组成的有序表中适当的位置,此种排序方法叫做_直接插入_排序。 102. 第i (i=0,1,.,n-2) 趟从参加排序的序列中第i个至第n-1个元素中挑选出一个最小元素,把它交换到第i个位置,此种排序方法叫做_直接选择_排序。 103. 每次直接或通过基准元素间接比较两个元素,若出现逆序排列就交换它们的位置,这种排序方法叫做_交换_排序。 104. 每次使两个相邻
18、的有序表合并成一个有序表,这种排序方法叫做_二路归并_排序。 105. 在直接选择排序中,记录比较次数的时间复杂度为_ O(n2)_。 106. 在直接选择排序中,记录移动次数的时间复杂度为_O(n)_。 107. 在堆排序中,对n个记录建立初始堆需要调用_n/2 _次调整算法。 108. 在堆排序中,如果n个对象的初始堆已经建好,那么到排序结束,还需要从堆顶结点出发调用_ n-1_次调整算法。 109. 在堆排序中,对任意一个分支结点进行调整运算的时间复杂度为_O(log2n)_。 110. 对n个数据对象进行堆排序,总的时间复杂度为_O(nlog2n)_。 111. 给定一组数据对象的关键
19、码为46,79,56,38,40,84,则利用堆排序方法建立的初始堆(最大堆)为_84,79,56,38,40,46_。 112. 快速排序在平均情况下的时间复杂度为_O(nlog2n)_。 113. 快速排序在最坏情况下的时间复杂度为_ O(n2)_。 114. 快速排序在平均情况下的空间复杂度为_O(log2n)_。 115. 快速排序在最坏情况下的空间复杂度为_O(n)_。 116. 给定一组数据对象的关键码为46,79,56,38,40,84,对其进行一趟快速排序处理,得到的右子表中有_ 3 _个对象。 117. 在对n个数据对象的二路归并排序中,每趟归并的时间复杂度为_ O(n)_。
20、 118. 在对n个数据对象进行的二路归并排序中,整个归并过程的时间复杂度为_ O(nlog2n)_。 119. 在索引表中,每个索引项至少包含有_关键码_域和地址域这两项。 120. 假定一个线性表为 12, 23, 74, 55, 63, 40, 82, 36,若按key%3条件进行划分,使得同一余数的元素成为一个子表,则包含74的子表长度为_2 _。 121.假定一个线性表为 (”abcd”,”baabd”,”bcef”,”cfg”,”ahij”,”bkwte”,”ccdt”,”aayb”),若按照字符串的第一个字母进行划分,使得同一个字母被划分在一个子表中,则得到的以a为第一个字母的子
21、表长度为_3_。 122. 在索引表中,若一个索引项对应数据对象表中的一个表项,则称此索引为稠密索引,若对应数据对象表中的若干表项,则称此索引为_稀疏_索引。 123. 假定对长度n = 100的线性表进行索引顺序搜索,并假定每个子表的长度均为,则进行索引顺序搜索的时间复杂度为_O()_。 124. 假定对长度n=100的线性表进行索引顺序搜索,并假定每个子表的长度均为,则进行索引顺序搜索的平均搜索长度为_11_。 125. 若对长度n=10000的线性表进行二级索引存储,每级索引表中的索引项是下一级20个表项的索引,则一级索引表的长度为_500_。 126. 若对长度n=10000的线性表进
22、行二级索引存储,每级索引表中的索引项是下一级20个表项的索引,则二级索引表的长度为_ 25 _。 127. 假定要对长度n=100的线性表进行散列存储,并采用开散列法处理冲突,则对于长度m = 20的散列表,每个散列地址的同义词子表(单链表)的长度平均为_5 _。 128. 在线性表的散列存储中,装载因子 又称为装载系数,若用m表示散列表的长度,n表示待散列存储的元素的个数,则 等于_n/m _。 129. 对于包含n个关键码的m阶B树,其最小高度为_ logm(n+1) _。 130. 已知一棵3阶B树中含有50个关键码,则该树的最小高度为_ 4_。 131. 已知一棵3阶B树中含有50个关
23、键码,则该树的最大高度为_ 5_。 132. 在一棵m阶B树上,每个非根结点的关键码数最少为_ m/2 -1_个。 133. 在一棵m阶B树上,每个非根结点的子树最少为_ m/2 _棵。 134. 在一棵m阶B树上,每个非根结点的关键码数最多为_ m-1_个。 135. 在对m阶B树插入元素的过程中,每向一个结点插入一个关键码后,若该结点的关键码个数等于_m_个,则必须把它分裂为2个结点。 136. 在从m阶B树删除关键码的过程中,当从一个结点中删除掉一个关键码后,所含关键码个数等于 m/2 -2个,并且它的左、右兄弟结点中的关键码个数均等于_ m/2 -1_,则必须进行结点合并。判断题1.
24、数据元素是数据的最小单位。错2. 数据的逻辑结构是指各数据元素之间的逻辑关系,是用户根据应用需要建立的。对3. 算法和程序原则上没有区别,在讨论数据结构时二者是通用的。错4. 数据的逻辑结构与数据元素本身的内容和形式无关。对5. 算法和程序都应具有下面一些特征:有输入,有输出,确定性,有穷性,有效性。错6. 只有用面向对象的计算机语言才能描述数据结构算法。错7. 如果采用如下方式定义一维字符数组: const int maxSize = 30; char amaxSize; 则这种数组在程序执行过程中不能扩充。对8. 如果采用如下方法定义一维字符数组: int maxSize = 30; ch
25、ar * a = new charmaxSize; 则这种数组在程序执行过程中不能扩充。错9. 数组是一种静态的存储空间分配,就是说,在程序设计时必须预先定义数组的数据类型和存储空间大小,由编译程序在编译时进行分配。错10. 多维数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。对11. 在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻。错12. 顺序表和一维数组一样,都可以按下标随机(或直接)访问。对13. 插入与删除操作是数据结构中最基本的两种操作,因此这两种操作在数组中也经常被使用。错14. 使用三元组表示稀疏矩阵中的非零元素能节省存储空间。 对15. 用字符数组存
26、储长度为n的字符串,数组长度至少为n+1。对16. 线性表若采用链式存储表示时,其存储结点的地址可连续也可不连续。对17. 线性表若采用链式存储表示, 在删除时不需要移动元素。对18. 在线性链表中删除中间的结点时,只需将被删结点释放。 错19. 在对双向循环链表做删除一个结点操作时,应先将被删除结点的前驱结点和后继结点链接好再执行删除结点操作。对20. 每次从队列中取出的是具有最高优先权的元素, 这种队列就是优先级队列。对21. 链式栈与顺序栈相比, 一个明显的优点是通常不会出现栈满的情况。对22. 在一个顺序存储的循环队列中, 队头指针指向队头元素的后一个位置。错23. 栈和队列都是顺序存
27、取的线性表, 但它们对存取位置的限制不同。对24. 在使用后缀表示实现计算器类时用到一个栈的实例, 它的作用是暂存运算器对象。对25. 在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。对26. 若让元素1,2,3依次进栈,则出栈次序1,3,2是不可能出现的情况。错27. 在用单链表表示的链式队列Q中,队头指针为Q-front,队尾指针为Q-rear,则队空条件为Q-front = Q-rear。 错28. 递归定义的数据结构通常用递归算法来实现对它的操作。对29. 递归的算法简单、易懂、容易编写,而且执行效率也高。错30. 递归调用算法与相同功能的非递归算法相比,主要问
28、题在于重复计算太多,而且调用本身需要分配额外的空间和传递数据和控制,所以时间与空间开销通常都比较大。 对31. 递归方法和递推方法本质上是一回事,例如求n! 时既可用递推的方法,也可用递归的方法。 错32. 用非递归方法实现递归算法时一定要使用递归工作栈。错33. 将f = 1 + 1/2 + 1/3+ + 1/n转化为递归函数时,递归部分为f (n) = f (n-1) + 1/n,递归结束条件为f (1) = 1。对34. 一个广义表的表头总是一个广义表。错35. 一个广义表的表尾总是一个表。对36. 一个广义表 ( (a), ( (b), c), ( ( (d) ) ) ) 的长度为3,
29、深度为4。对37. 一个广义表 ( (a), ( (b), c), ( ( (d) ) ) ) 的表尾是 ( (b), c), ( ( (d) ) )。错 38. 当向一个最小堆插入一个具有最小值的元素时,该元素需要逐层向上调整,直到被调整到堆顶位置为止。对 39. 当从一个最小堆中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。对 40. 二叉树是一棵无序树。错 41. 在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行前序遍历和后序遍历,则具有相同的结果。错 42. 在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分
30、别进行中序遍历和后序遍历,则具有相同的结果。 对 43. 在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行前序遍历和中根遍历,则具有相同的结果。错 44. 在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行前序遍历和按层遍历,则具有相同的结果。对 45. 在树的存储中,若使每个结点带有指向双亲结点的指针,这为在算法中寻找双亲结点带来方便。对 46. 对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(n)。对 47. 对于一棵具有n个结点,其高度为h的任何二叉树,进行任一种次序遍历的时间复杂度均为O(h)。错 48. 对于一棵具有n个结点的任何二叉树,进行前序、中序或后序的任一种次序遍历的空间复杂度为O(log2n)。错 49. 在一棵具有n个结点的线索二叉树中,每个结点的指针域可能指向子女结点,也可能作为线索,使之指向某一种遍历次序的前驱或后继结点,所有结点中作为线索使用的指针域共有n个。错 50. 线索二叉树中的每个结点通常包含有5个数据成员。对 51. 对具有n个结点的堆进行插入一个元素运算的时间复杂度为O(n)。错 52. 在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度。对 53. 进行
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1