1、国家二级公共基础知识(数据结构与算法、程序设计基础)模拟试卷3及答案与解析 一、选择题 下列各题 A、 B、 C、 D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。 1 算法的空间复杂度是指 ( A)算法在执行过程中所需要的计算机存储空间 ( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的临时工作单元数 2 下列叙述中正确的是 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度大,则其时间复杂度必定小 ( C)一个算法的时间复杂度大,则其空间复杂度必定小 ( D)算法的时间复杂度与空间复杂度
2、没有直接关系 3 下列描述中正确的是 ( A)数据的逻辑结构与存储结构必定是一一对应的 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上三种说法都不对 4 下列描述中正确的是 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有 根结点的二叉树是线性结构 5 支持子程序调用的数据结构是 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 6 下列关于栈的叙述中,正确的是 ( A)栈底元素一定是最后入栈的元素
3、( B)栈顶元素一定是最先入栈的元素 ( C)栈操作遵循先进后出的原则 ( D)以上三种说法都不对 7 一个栈的初始状态为空。现将元素 1, 2, 3, A, B, C依次入栈,然后再依次出栈,则元素出栈的顺序是 ( A) 1, 2, 3, A, B, C ( B) C, B, A, 1, 2, 3 ( C) C, B, A, 3, 2, 1 ( D) 1, 2, 3, C, B, A 8 下列对队列的描述中正确的是 ( A)队列属于非线性表 ( B)队列按 “先进后出 ”原则组织数据 ( C)队列在队尾删除数据 ( D)队列按 “先进先出 ”原则组织数据 9 下列关于栈的描述中正确的是 (
4、A)在栈中只能插入元素而不能删除元素 ( B)在栈中只能删除元素而不能插入元素 ( C)栈是特殊的线性表,只能在一端插入或删除元素 ( D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素 10 下列叙述中正确的是 ( A)循环队列是队列的一种链式存储结构 ( B)循环队列是 队列的一种顺序存储结构 ( C)循环队列是非线性结构 ( D)循环队列是一种逻辑结构 11 下列叙述中正确的是 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都是非线性结构 ( D)栈与队列都是线性结构 12 下列叙述中正确的是 ( A)循环队列中的元素个数随队头指针与队尾
5、指针的变化而动态变化 ( B)循环队列中的元素个数随队头指针的变化而动态变化 ( C)循环队列中的元素个数随队尾指针的变化而动态变化 ( D)循环队列中的元素个数不会变化 13 下列叙述 中正确的是 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)以上都不正确 14 下列叙述中正确的是 ( A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 (
6、C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 ( D)链式存储结构比顺序存储结构节省 存储空间 15 某系统总体结构图如下图所示: 该系统总体结构图的深度是 ( A) 7 ( B) 6 ( C) 3 ( D) 2 16 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( A) 10 ( B) 8 ( C) 6 ( D) 4 17 一棵二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数为 ( A) 219 ( B) 221 ( C) 229 ( D) 231 18 设树 T的深度为 4,其中度为 1, 2, 3, 4的结点个数分别为 4, 2,
7、1, 1。则 T中的叶子结点数为 ( A) 8 ( B) 7 ( C) 6 ( D) 5 19 对下列二叉树 进行前序遍历的结果是 ( A) DYBEAFCZX ( B) YDEBFZXCA ( C) ABDYECFXZ ( D) ABCDEFXYZ 20 在长度为 64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为 ( A) 63 ( B) 64 ( C) 6 ( D) 7 21 下列数据结构中,能用二分法进行查找的是 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 22 对于长度为 n的线性表,在最坏情况下,下列各排序法 所对应的比较次数中正
8、确的是 ( A)冒泡排序为 n 2 ( B)冒泡排序为 n ( C)快速排序为 n ( D)快速排序为 n(n-1) 2 23 下列排序方法中,最坏情况下比较次数最少的是 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 24 结构化程序所要求的基本结构不包括 ( A)顺序结构 ( B) GOTO跳转 ( C)选择 (分支 )结构 ( D)重复 (循环 )结构 25 下列选项中不属于结构化程序设计方法的是 ( A)自顶向下 ( B)逐步求精 ( C)模块化 ( D) 可复用 26 面向对象方法中,继承是指 ( A)一组对象所具有的相似性质。 ( B)一个对象具有另一
9、个对象的性质 ( C)各对象之间的共同性质 ( D)类之间共享属性和操作的机制 27 定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是 ( A) -369 ( B) 369 ( C) 0 369 ( D)整数集合 1, 2, 3, 4, 5 28 下列选项中不属于面向对象程序设计特征的是 ( A)继承性 ( B)多态性 ( C)类比性 ( D)封装性 国家二级公共基础知识(数据结构与算法、程 序设计基础)模拟试卷3答案与解析 一、选择题 下列各题 A、 B、 C、 D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。 1 【正确答案】 A 【试题解析】 算
10、法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。 【知识模块】 数据结构与算法 2 【正确答案】 D 【试题解析】 算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量, 算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中 n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中
11、所需要的额外空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。 【知识模块】 数据结构与算法 3 【正确答案】 D 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑 结构在计算机存储空间中的存放形式称为数据的存储结构 (也称数据的物理结构 )。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等。 【知识模块】 数据结构与算法 4 【正确答案】 A 【试题解析】 线性表的链式存储结构称为线性链表。线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。各数据元素之间的前后件关系是
12、由各结点的指针域来指示的,指向线性表中第一结点的指针 HEAD称为头指针,当 HEAD=NULL时称为空表。栈、队 列和双向链表是线性结构,树是一种简单的非线性结构。在树这种数据结构中,所有数据元素的关系具有明显的层次特征。二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。 【知识模块】 数据结构与算法 5 【正确答案】 A 【试题解析】 栈是一种限定在一端进行插入与删除的线性表。在主函数调用子函数时,要首先保存主函数当前的状态,然后转去执行子函数,把子函数的运行结果返回到主函数调用子函数时的位置,主函数再
13、接着往下执行,这种过程符合栈的特点。所以一般采用栈式存储方式。 【知识模块】 数据结构与算法 6 【正确答案】 C 【试题解析】 栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先出 ”的规则操作元素。 【知识模块】 数据结构与算法 7 【正确答案】 C 【试题解析】 栈是按照 “先进后出 ”或 “后进先出的 ”原则组织数据的。所以出栈顺序是 CBA321。 【知识模块】 数据结构与算法 8 【正确答案】 D 【试题解析】 队列 (queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾;允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将
14、最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称 “先进先出 ”或 “后进后出 ”的线性表。 【知识模块】 数据结构与算法 9 【正确答案】 C 【试题解析】 栈是限定在一端 进行插入与删除的线性表,在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 【知识模块】 数据结构与算法 10 【正确答案】 B 【试题解析】 本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。 【知识模块】 数据结构与算法 11 【正确答案】 D 【试题解析】 栈是先进后出,队列是先进先出。栈和队列都是
15、_种线性表,属于线性结构。 【知识模块】 数据结构与算法 12 【正 确答案】 A 【试题解析】 所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针 rear指向队列中的队尾元素,用队头指针 front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针 front指向的后一个位置与队尾指针 rear指向位置之间的元素数量。 【知识模块】 数据结构与算法 13 【正确答案】 B 【试题解析】 线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的 方式中,将存储空间的每一个存储
16、结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。 【知识模块】 数据结构与算法 14 【正确答案】 A 【试题解析】 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。 【知识模块】 数据结构与算法 15 【正确答案】 C 【试题解析】 这个系统总体结构图是一棵树结构,在树结构中,根结点在第 1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共
17、3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为 3。 【知识模块】 数据结构与算法 16 【正确答案】 C 【试题解析】 根据二叉树的性质,在任意二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。 【知识模块】 数据结构与算法 17 【正确答案】 A 【试题解析】 在二叉树中,叶子结点个数为 n0,则度为 2的结点 数 n2=n0-1。本题中叶子结点的个数为 70,所以度为 2的结点个数为 69,因而总结点数 =叶子结点数 +度为 1的结点数 +度为 2的结点数 =70+80+69=219。 【知识模块】 数据结构与算法 18 【正确答案】 B 【试题解析】
18、 深度为 m二叉树其总结点数为 2m-1=24-1=15。总结点数减去度为1, 2, 3, 4的结点个数就是叶子结点数。 15-4-2-1-1=7。 【知识模块】 数据结构与算法 19 【正确答案】 C 【试题解析】 二叉树前序遍历的简单描述:若二叉树为空,则结束返回; 否则: 访问根结点; 前序遍历左子树; 前序遍历右子树。 可见,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是 ABDYECFXZ。 【知识模块】 数据结构与算法 20 【正确答案】 B 【试题解析】 顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表
19、的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到 (即查找成功 ),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要 找的元素 (即查找失败 )。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。 【知识模块】 数据结构与算法 21 【正确答案】 A 【试题解析】 二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序 (即从小到大,但允许相邻元素值
20、相等 )的表。 【知识模块】 数据结构与算法 22 【正确答案】 D 【试题解析】 假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n 2遍的从前往后的扫描和 n 2遍的从后往前的扫描,需要的比较次数为 n(n-1)2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。 【知识模块】 数据结构与算法 23 【正确答案】 D 【试题解析】 冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数为: n(n-1) 2。而堆排序法在最坏的情况下需要比较的次数为 O(nlog2n)。其中堆排序的比较次数最少。 【知识模块】 数据结构与算法 24 【
21、正确答案】 B 【试题解析】 结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。 【知识模块】 程序设计基础 25 【正确答案】 D 【试题解析】 结构化程序设计方法韵主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用 goto语句。自顶向下是指程序设计时应先考虑总体,后考虑细节;先考虑全局自标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进一 步分解成具体的小目标,把每个小目标称为一个模块。可复用性是指软件元素不加修改成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工
22、程追求的目标之一,是提高软件生产效率的最主要方法,不属于结构化程序设计方法。 【知识模块】 程序设计基础 26 【正确答案】 D 【试题解析】 面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。 【知识模块】 程序设计基础 27 【正确答案】 B 【试题解析】 UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项 A)和选项 C),选项 D)是整数集合,所以也排除。 【知识模块】 程序设计基础 28 【正确答案】 C 【试题解析】 面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的 行动,该现象称为多态性。 【知识模块】 程序设计基础