1、国家二级公共基础知识(数据结构与算法、程序设计基础)模拟试卷2及答案与解析 一、选择题 下列各题 A、 B、 C、 D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。 1 下列叙述中正确的是 ( A)算法就是程序 ( B)设计算法时只需要考虑数据结构的设计 ( C)设计算法时只需要考虑结果的可靠性 ( D)以上三种说法都不对 2 下列叙述中正确的是 ( A)算法的效率只与问题的规模有关,而与数据的存储结构无关 ( B)算法的时间复杂度是指执行算法所需要的计算工作量 ( C)数据的逻辑 结构与存储结构是一一对应的 ( D)算法的时间复杂度与空间复杂度一定相关 3 下列描述中
2、正确的是 ( A)一个逻辑数据结构只能有一种存储结构 ( B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 4 下列数据结构中,属于非线性结构的是 ( A)循环队列 ( B)带链队列 ( C)二叉树 ( D)带链栈 5 下列关于栈的叙述正确的是 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 6 下列关于栈叙述正确的是 ( A)栈顶元素能最先被删除 ( B
3、)栈顶元素最后才能被删除 ( C)栈底元素永远不能被删除 ( D)以上三种说法都不对 7 一个栈的初始状态为空。现将元素 1、 2、 3、 4、 5、 A、 B、 C、 D、 E依次入栈,然后再依次出栈,则元素出栈的顺序是 ( A) 12345ABCDE ( B) EDCBA54321 ( C) ABCDE12345 ( D) 54321EDCBA 8 按照 “后进先出 ”原则组织数据的数据结构是 ( A)队列 ( B)栈 ( C)双向链表 ( D)二叉树 9 下列叙述中正确的是 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D
4、)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 10 对于循环队列,下列叙述中正确的是 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针一定小于队尾指针 ( D)队头指针可以大于队尾指针,也可以小于队尾指针 11 在 一个容量为 15的循环队列中,若头指针 front=6,尾指针 rear=9,则循环队列中的元素个数为 ( A) 2 ( B) 3 ( C) 4 ( D) 5 12 下列与队列结构有关联的是 ( A)函数的递归调用 ( B)数组元素的引用 ( C)多重循环的执行 ( D)先到先服务的作业调度 13 下列叙述中正确的是 ( A)线性表链式
5、存储结构的存储空间一般要少于顺序存储结构 ( B)线性表链式存储结构与顺序存储结构的存储空间都是连续的 ( C)线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 ( D) 以上都不正确 14 下列对于线性链表的描述中正确的是 ( A)存储空间不一定连续,且各元素的存储顺序是任意的 ( B)存储空间不一定连续,且前件元素一定存储在后件元素的前面 ( C)存储空间必须连续,且前件元素一定存储在后件元素的前面 ( D)存储空间必须连续,且各元素的存储顺序是任意的 15 下列叙述中正确的是 ( A)有一个以上根结点的数据结构不一定是非线性结构 ( B)只有一个根结点的数据结构不一定是线性结构
6、 ( C)循环链表是非线性结构 ( D)双向链表是非线性结构 16 某二叉树中有 n个度为 2的结点,则该二叉树中的叶子结点数为 ( A) n+1 ( B) n-1 ( C) 2n ( D) n 2 17 一棵二叉树中共有 80个叶子结点与 70个度为 1的结点,则该二叉树中的总结点数为 ( A) 219 ( B) 229 ( C) 230 ( D) 231 18 某二叉树共有 12个结点,其中叶子结点只有 1个。则该二叉树的深度为 (根结点在第 1层 ) ( A) 3 ( B) 6 ( C) 8 ( D) 12 19 在深度为 7的满二叉树中,叶子结点的个数为 ( A) 32 ( B) 31
7、 ( C) 64 ( D) 63 20 对长度为 n的线性表进行顺序查找,在最坏情况下所需要的比较次数为 ( A) log2n ( B) n 2 ( C) n ( D) n+1 21 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n) 22 对长度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为 ( A) 9 ( B) 10 ( C) 45 ( D) 90 23 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1) 2的排序 方法是 ( A)快速排序 ( B
8、)冒泡排序 ( C)直接插入排序 ( D)堆排序 24 下列描述中,不符合良好程序设计风格要求的是 ( A)程序的效率第一,清晰第二 ( B)程序的可读性好 ( C)程序中要有必要的注释 ( D)输入数据前要有提示信息 25 结构化程序设计的基本原则不包括 ( A)多元性 ( B)自顶向下 ( C)模块化 ( D)逐步求精 26 下列选项中不符合良好程序设计风格的是 ( A)源程序要文档化 ( B)数据说明的次序要规范化 ( C)避免滥用 goto语句 ( D)模块 设计要保证高耦合、高内聚 27 在面向对象方法中,不属于 “对象 ”基本特点的是 ( A)一致性 ( B)分类性 ( C)多态性
9、 ( D)标识唯一性 28 在面向对象方法中,实现信息隐蔽是依靠 ( A)对象的继承 ( B)对象的多态 ( C)对象的封装 ( D)对象的分类 国家二级公共基础知识(数据结构与算法、程序设计基础)模拟试卷2答案与解析 一、选择题 下列各题 A、 B、 C、 D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。 1 【正确答案】 D 【试题解析】 所谓 算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法
10、的控制结构。 【知识模块】 数据结构与算法 2 【正确答案】 B 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间 。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的:数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。 【知识模块】 数据结构与算法 3 【正确答
11、案】 D 【试题解析】 数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指 数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构;而采用不同的存储结构,其数据处理的效率是不同的。 【知识模块】 数据结构与算法 4 【正确答案】 C 【试题解析】 根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。 【知识模块】 数据结构与算法 5 【正确答案】 B 【试题解析】 栈是限定在一端
12、进插入和删除的线性麦,允许进行插入和删除元素的一端称 为栈顶,另一端称为栈底。栈是按照 “先进后出 ”的原则组织数据的。 【知识模块】 数据结构与算法 6 【正确答案】 A 【试题解析】 栈是先进后出的线性表,栈顶的元素最先被删除,栈底的元素最后被删除。 【知识模块】 数据结构与算法 7 【正确答案】 B 【试题解析】 栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。所以出栈顺序是 EDCBA54321。 【知识模块】 数据结构与算法 8 【正确答案】 B 【试题解析】 栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈
13、顶元素总是最后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。即栈是按照 “后进先出 ”(Last In First Out,简称 LIFO)或“先进后出 ”(First In Last Out,简称 FILO)的原则组织数据的。因此,栈也称为“后进先出表 ”或 “先进后出 ”表。 【知识模块】 数据结构与算法 9 【正确答案】 D 【 试题解析】 本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以
14、采用顺序存储结构,又可以采用链式存储结构。 【知识模块】 数据结构与算法 10 【正确答案】 D 【试题解析】 所谓循环队列,就是将队列存储空间的最后一个位置绕至 10第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针 front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当 rear或 front等于队列的长度加 1时,就把 rear或 front值置为 1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。 【知识模块
15、】 数据结构与算法 11 【正确答案】 B 【试题解析】 循环队列中, rear表示尾指针, front表示头指针,当有元素入队时, rear=rear+1,而元素出队的时候, front=front+1,当 rear值大于 front值时,队列中的元素个数为 rear-front,当 rear的值小于 front时,列队中的元素个数为 rear-front+m(m表示队列的容量 )。 【知识模块】 数据结构与算法 12 【正确答案】 D 【试题解析】 队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。 【知识模块】 数据结构与算法 13 【正确答案】 C 【试题解析】 线性表的存
16、储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中, 将存储空间的每一个存储结点分为两部分,一部分用手存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。 【知识模块】 数据结构与算法 14 【正确答案】 A 【试题解析】 一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之向的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针 head称为头指针,当 hea
17、d=MULL(或 0)时称为空表。 【知识模块】 数据结构与算法 15 【正确答案】 B 【试题解析】 在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。 【知识模块】 数据结构与算法 16 【正确答案】 A 【试题解析】 在任意一棵二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。所以该二叉树的叶子结点数等于 n+1。 【知识模块】 数据结构与算法 17 【正确答案】 B 【试题解析】 根据二叉树的性质,在任意二叉树中,度为 0的结 点 (即叶子结点 )总是比度为 2的结点多一个,故总结点数 =叶子节点数 +度为 2的节点数 +度为 1的节点数 =80+7
18、9+70=229。 【知识模块】 数据结构与算法 18 【正确答案】 D 【试题解析】 根据二叉树的性质,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。题目中的二叉树的叶子结点为 1,因此度为 2的结点的数目为 0,故该二叉树为 12层,每层只有一个结点。 【知识模块】 数据结构与算法 19 【正确答案】 C 【试题解析】 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层 上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第 k层上有 2k-1个结点,且深度为 m的满二叉树有 2m-1个结点。对于深度为 7的满二叉树,叶子结点所在
19、的是第 7层,一共有 27-1=64个叶子结点。全部结点共 27-1=127个。 【知识模块】 数据结构与算法 20 【正确答案】 C 【试题解析】 在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的 最坏情况,需要比较的次数为 n次。 【知识模块】 数据结构与算法 21 【正确答案】 C 【试题解析】 对于长度为 n的有序线性表,在最坏情况下,二分法查找只需比较log2n次,而顺序查找需要比较 n次。 【知识模块】 数据结构与算法 22 【正确答案】 C 【试题解析】 线性表的长度为
20、n,最坏情况下冒泡排序需要比较的次数为 n(n-1) 2。 【知识模块】 数据结构与算法 23 【正确答案】 D 【试题解析】 各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序 n(n-1) 2、快速排序 n(n-1) 2、简单插入排序 n(n-1) 2、希尔排序 O(n1 5)、简单选择排序 n(n-1) 2、堆排序 O(nlog2n)。 【知识模块】 数据结构与算法 24 【正确答案】 A 【试题解析】 一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的 “清晰第一,效率第二 ”的论点已成为当今主导
21、的程序设计风格。 【知识模块】 程序设计基础 25 【正确答案】 A 【试题解析】 结构 化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用 GOTO语句,其中不包括多态性。 【知识模块】 程序设计基础 26 【正确答案】 D 【试题解析】 一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的 “清晰第一、效率第二 ”的论点已成为当今主导的程序设计风格。良好的程序设计风格主要应注重和考虑下列几个因素: 源程序文档化,包括下列三个方面: A)符号的命名应具有一定的含义; B)正确的
22、注释能够帮助读者理解程序; C)视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。 数据说明的方法,包括下列三个方面: A)数据说明的次序规范化; B)说明语句中变量安排有序化; C)使用注释来说明复杂数据的结构。 语句的结构应该简单直接,不应该为提高效率而把语句复杂化。 输入和输出方式和风格应尽可能方便用户的使用。 【知识模块】 程序设计基础 27 【正确答案】 A 【试题解析】 对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独立性。 【知识 模块】 程序设计基础 28 【正确答案】 C 【试题解析】 对象的封装性是指从外部看只能看到对象的外部特征,即只需知道数据的取值范围和可以对该数据施加的操作,而不需要知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。 【知识模块】 程序设计基础
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1