1、国家二级 VB机试(数据结构与算法)模拟试卷 2及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)算法就是程序 ( B)设计算法时只需要考虑数据结构的设计 ( C)设计算法时只需要考虑结果的可靠性 ( D)以上三种说法都不对 2 算法的时间复杂度是指 ( A)算法的执行时间 ( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的基本运算次数 3 下列叙述中正确的是 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度 大,则其时间复杂度必定小 ( C)一个算法的时间复杂度大,则其空间复杂度必定小 ( D)算法的时
2、间复杂度与空间复杂度没有直接关系 4 下列描述中正确的是 ( A)一个逻辑数据结构只能有一种存储结构 ( B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 5 下列叙述中正确的是 ( A)有一个以上根结点的数据结构不一定是非线性结构 ( B)只 有一个根结点的数据结构不一定是线性结构 ( C)循环链表是非线性结构 ( D)双向链表是非线性结构 6 下列描述中正确的是 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结
3、构 ( C)双向链表是非线性结构 ( D)只有根结点的二叉树是线性结构 7 下列关于栈的叙述正确的是 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 8 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 9 下列关于栈的叙述中,正确的是 ( A)栈底元素一定是最后入栈的元素 ( B)栈顶元素一定是最先入栈的元素 ( C)栈操作遵循先进后出的原则 ( D)以上三种说法都不对 10 一个栈的初始状态为空。现将元素 1、 2、 3、 4、 5、 A、 B、
4、 C、 D、 E依次入栈,然后再依次出栈,则元素出栈的顺序是 ( A) 12345ABCDE ( B) EDCBA54321 ( C) ABCDE12345 ( D) 54321EDCBA 11 下列关于栈的描述中错误的是 ( A)栈是先进后出的线性 表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)对栈的插入与删除操作中,不需要改变栈底指针 12 下列对队列的描述中正确的是 ( A)队列属于非线性表 ( B)队列按 “先进后出 ”原则组织数据 ( C)队列在队尾删除数据 ( D)队列按 “先进先出 ”原则组织数据 13 下列叙述中正确的是 ( A)栈是 “先进先出 ”的线性表 (
5、B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 14 下列叙述中正确的是 ( A)循 环队列有队头和队尾两个指针,因此,循环队列是非线性结构 ( B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 ( C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 ( D)循环队列中元素的个数是由队头指针和队尾指针共同决定 15 下列叙述中正确的是 ( A)循环队列是队列的一种链式存储结构 ( B)循环队列是队列的一种顺序存储结构 ( C)循环队列是非线性结构 ( D)循环队列是一种逻辑结构 1
6、6 在一个容量为 15的循环队列中,若头指针 front=6,尾指针 rear=9,则循环队列中的元素个数为 ( A) 2 ( B) 3 ( C) 4 ( D) 5 17 下列叙述中正确的是 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 18 下列叙述中正确的是 ( A)循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 ( B)循环队列中的元素个数随队头指针的变化而动态变化 ( C)循环队列中的元素个数随队尾指针的变化而动态变化 ( D)循环队列中的元素个数不
7、 会变化 19 下列叙述中正确的是 ( A)线性表链式存储结构的存储空间一般要少于顺序存储结构 ( B)线性表链式存储结构与顺序存储结构的存储空间都是连续的 ( C)线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 ( D)以上都不正确 20 下列叙述中正确的是 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)上述三种说法都不对 21 下列叙述中正确的是 ( A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定
8、是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 ( C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 ( D)链式存储结构比顺序存储结构节省存储空间 22 下列叙述中正确的是 ( A)有一个以上根结点的数据结构不一定是非线性结构 ( B)只有一个根结点的数据结构不一定是线性结构 ( C)循环链表是非线性结构 ( D)双向链表是非线性结构 23 下列关于二叉树的叙述中, 正确的是 ( A)叶子结点总是比度为 2的结点少一个 ( B) n十子结点总是比度为 2的结点多一个 ( C)叶子结点数是度为 2的结点数的两倍 ( D)度为 2的结点数是度为 1的结点数的两
9、倍 24 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( A) 10 ( B) 8 ( C) 6 ( D) 4 25 一棵二叉树中共有 80个叶子结点与 70个度为 1的结点,则该二叉树中的总结点数为 ( A) 219 ( B) 229 ( C) 230 ( D) 231 26 某二叉树共有 7个结点,其叶子结点只有 1个,则该二叉 树的深度为 (假设根结点在第 1层 ) ( A) 3 ( B) 4 ( C) 6 ( D) 7 27 设树 T的深度为 4,其中度为 1, 2, 3, 4的结点个数分别为 4, 2, 1, 1。则 T中的叶子结点数为 ( A) 8 ( B) 7 (
10、 C) 6 ( D) 5 28 在深度为 7的满二叉树中,叶子结点的个数为 ( A) 32 ( B) 31 ( C) 64 ( D) 63 29 对如下二叉树 进行后序遍历的结果为 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 30 在长度为 64的有序线性表中进 行顺序查找,最坏情况下需要比较的次数为 ( A) 63 ( B) 64 ( C) 6 ( D) 7 31 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n) 32 冒泡
11、排序在最坏情况下的比较次数是 ( A) n(n+1) 2 ( B) nlog2n ( C) n(n-1) 2 ( D) n 2 33 对于长度为 n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ( A)冒泡排序为 n 2 ( B)冒泡排序为 n ( C)快速排序为 n ( D)快速排序为 n(n-1) 2 34 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1) 2的排序方法是 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 国家二级 VB机试(数据结构与算法)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 所
12、谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也 不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。 【知识模块】 数据结构与算法 2 【正确答案】 D 【试题解析】 算法的时间复杂度,是指执行算法所需要的计算工作量。算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度最。 【知识模块】 数据结构与算法 3 【正确答案】 D 【试题解析】 算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法
13、所执行的鉴本运算次数来度量,而算法所 执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中 n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义曲丁知,算法的时间复杂度与空间复杂度并不相关。 【知识模块】 数据结构与算法 4 【正确答案】 D 【试题解析】 数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;数据的存储结构是在对数据进行处理时,各数据元素在计算机中 的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,
14、一种逻辑结构可以表示成多种存储结构:而采用不同的存储结构,其数据处理的效率是不同的。 【知识模块】 数据结构与算法 5 【正确答案】 B 【试题解析】 在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。 【知识模块】 数据结构与算法 6 【正确答案】 A 【试题解析】 线性表的链式存储结构称为线性链表。线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。各数据元素之间 的前后件关系是由各结点的指针域来指示的,指向线性表中第一结点的指针 HEAD称为头指针,当 HEAD=NULL时称为空表。栈、队列和双向链表是线性结构,树是一种简单的非线性结构。在
15、树这种数据结构中,所有数据元素的关系具有明显的层次特征。二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。 【知识模块】 数据结构与算法 7 【正确答案】 B 【试题解析】 栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。栈是按照 “先进后出 ”的原则组织数据的。 【知识模块】 数据结构与算法 8 【正确答案】 B 【试题解析】 栈按照 “先进后出 ”(FILO)或 “后进先出 ”(LIFO)组织数据;队列是“先进先出 ”(FIFO)或 “后进后出 ”(LILO)
16、的线性表。 【知识模块】 数据结构与算法 9 【正确答案】 C 【试题解析】 栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先 出 ”的规则操作元素。 【知识模块】 数据结构与算法 10 【正确答案】 B 【试题解析】 栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。所以出栈顺序是 EDCBA5432l1。 【知识模块】 数据结构与算法 11 【正确答案】 B 【试题解析】 栈是限定在一端进行插入与删除的线性表。栈顶 (top):插入数据(即入栈 )的一端:栈底 (bottom):不能入栈也不能出栈的一端。栈存储数据的原则: “先进后出 ”或 “后进先出 ”。栈的特
17、性是具有记忆作用。 【知识模块】 数据结构与 算法 12 【正确答案】 D 【试题解析】 队列 (queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾;允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称 “先进先出 ”或 “后进后出 ”的线性表。 【知识模块】 数据结构与算法 13 【正确答案】 D 【试题解析】 本题主要考查了栈、队列、循环队列的概念,栈是先进后出 “的线性表,队列是先进先出的线性表。根据数据结构中各数据元素 之间的前后件关系的复杂程度一般将数据结构分为两大类型:
18、线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。 【知识模块】 数据结构与算法 14 【正确答案】 D 【试题解析】 循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。 【知识模块】 数据结构与算法 15 【正确答案】 B 【试题解析】 本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是 一种顺序存储结构的队列。 【知识模块】 数据结构与算法 16 【正确答案】 B 【试题解析】 循环队列中, rear表示尾指针, front表示头指针,当有元素入队时, re
19、ar=rear+1,而元素出队的时候, front=front+1,当 rear值大于 front值时,队列中的元素个数为 rear-front,当 rear的值小于 front时,列队中的元素个数为 rear-front+m(m表示队列的容量 )。 【知识模块】 数据结构与算法 17 【正确答案】 D 【试题解析】 栈是 “先 进后出 ”,队列 “是先进先出 ”。栈和队列都是一种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。 【知识模块】 数据结构与算法 18 【正确答案】 A 【试题解析】 所谓循环结构就是将队列存储
20、空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针 rear指向队列中的队尾元素,用队头指针 front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针 front指向的后一个何置与队尾 指针 rear指向位置之间的元索数量。 【知识模块】 数据结构与算法 19 【正确答案】 C 【试题解析】 线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存
21、储方式比顺序存储方式的存储宅问要大一些。 【知识模块】 数据结构与算法 20 【正确答案】 B 【试题解析】 线性表的存储分 为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域:另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。 【知识模块】 数据结构与算法 21 【正确答案】 A 【试题解析】 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻
22、的数据元素存储在物理上 相邻的存储单元里,结点之间的关系南存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。 【知识模块】 数据结构与算法 22 【正确答案】 B 【试题解析】 在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。 【知识模块】 数据结构与算法 23 【正确答案】 B 【试题解析】 由二叉树的性质可以知道在二叉树中时叶子结点总是比度为 2的结点多一个。 【知识模块】 数据结构与算法 24 【正确答案】 C 【试题解析】 根据二叉树的性质,在 任意二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。 【知识模块】 数据结构与算法 2
23、5 【正确答案】 B 【试题解析】 根据二叉树的性质,在任意二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个,故总结点数 =叶子节点数 +度为 2的节点数 +度为 1的节点数 =80+79+70=229。 【知识模块】 数据结构与算法 26 【正确答案】 D 【试题解析】 根据二叉树的性质,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。题目中的二叉树的叶子结点为 1,因此度 为 2的结点的数目为 0,故该二叉树为 7层,每层只有一个结点。 【知识模块】 数据结构与算法 27 【正确答案】 B 【试题解析】 深度为 m二叉树其总结点数为 2m-1=24-1=15
24、。总结点数减去度为1, 2, 3, 4的结点个数就是叶子结点数。 15-4-2-1-1=7。 【知识模块】 数据结构与算法 28 【正确答案】 C 【试题解析】 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第 k层上 有 2k-1个结点,且深度为 m的满二叉树有 2m-1个结点。对于深度为 7的满二叉树,叶了结点所在的是第 7层,一共有 27-1=64个叶子结点。全部结点共 27-1=127个。 【知识模块】 数据结构与算法 29 【正确答案】 D 【试题解析】 所谓后序遍历是指在访问根据结
25、点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则 结束返回;否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项 D为正确答案。 【知识模块】 数据结构与算法 30 【正确答案】 B 【试题解析】 顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元
26、素与被查找的元素进行比较,若相等则表示找到 (即查找成功 ),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找 的元素 (即查找失败 )。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。 【知识模块】 数据结构与算法 31 【正确答案】 C 【试题解析】 对于长度为 n的有序线性表,在最坏情况下,二分法查找只需比较log2n次。而顺序查找需要比较 n次。 【知识模块】 数据结构与算法 32 【
27、正确答案】 C 【试题解析】 对 n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过 n 2遍的从前往后的扫描和 n 2遍的从后往前的扫描,需要的比较次数为n(n-1) 2。 【知识模块】 数据结构与算法 33 【正确答案】 D 【试题解析】 假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n 2遍的从前往后的扫描和 n 2遍的从后往前的扫描,需要的比较次数为 n(n-1)2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。 【知识模块】 数据结构与算法 34 【 正确答案】 D 【试题解析】 各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序 n(n-1) 2、快速排序 n(n-1) 2、简单插入排序 n(n-1) 2、希尔排序 O(n1 5)、简单选择排序 n(n-1) 2、堆排序 O(nlog2n)。 【知识模块】 数据结构与算法