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