1、国家二级 C+机试(数据结构与算法)模拟试卷 7 及答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:34,分数:68.00)1.下列叙述中正确的是( )。(分数:2.00)A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B.循环队列中的元素个数随队头指针的变化而动态变化C.循环队列中的元素个数随队尾指针的变化而动态变化D.循环队列中的元素个数不会变化2.下列关于线性链表的叙述中,正确的是( )。(分数:2.00)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插
2、入与删除时,不需要移动表中的元素D.以上都不正确3.下列叙述中正确的是( )。(分数:2.00)A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D.以上都不正确4.下列叙述中正确的是( )。(分数:2.00)A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.以上都不正确5.下列叙述中正确的是( )。(分数:2.00)A.线性表的链式存
3、储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空问一般要多于顺序存储结构C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.上述三种说法都不对6.下列对于线性链表的描述中正确的是( )。(分数:2.00)A.存储空间不一定连续,且各元素的存储顺序是任意的B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的7.下列叙述中正确的是( )。(分数:2.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构
4、只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间8.下列链表中,其逻辑结构属于非线性结构的是( )。(分数:2.00)A.二叉链表B.循环链表C.双向链表D.带链的栈9.下列叙述中正确的是( )。(分数:2.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构10.某系统总体结构图如下图所示: (分数:2.00)A.7B.6C.3D.211.下列关于二叉树的叙述中,正确的是( )。(分数:2.00)A.叶子结
5、点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍12.某二叉树中有 n 个度为 2 的结点,则该二叉树中的叶子结点数为( )。(分数:2.00)A.n+1B.n-1C.2nD.n213.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是( )。(分数:2.00)A.10B.8C.6D.414.一棵二叉树共有 25 个结点,其中 5 个是叶子结点,则度为 1 的结点数为( )。(分数:2.00)A.16B.10C.6D.415.一棵二叉树中共有 80 个叶子结点与 70 个度
6、为 1 的结点,则该二叉树中的总结点数为( )。(分数:2.00)A.219B.229C.230D.23116.一棵二叉树中共有 70 个叶子结点与 80 个度为 1 的结点,则该二叉树中的总结点数为( )。(分数:2.00)A.219B.221C.229D.23117.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层)( )。(分数:2.00)A.3B.4C.6D.718.某二叉树共有 12 个结点,其中叶子结点只有 1 个。则该二叉树的深度为(根结点在第 1 层)( )。(分数:2.00)A.3B.6C.8D.1219.设树 T 的深度为 4,
7、其中度为 1,2,3,4 的结点个数分别为 4,2,1,1。则 T 中的叶子结点数为( )。(分数:2.00)A.8B.7C.6D.520.设一棵完全二叉树共有 700 个结点,则此二叉树中的叶子结点数为( )。(分数:2.00)A.85B.120C.250D.35021.在深度为 7 的满二叉树中,叶子结点的个数为( )。(分数:2.00)A.32B.31C.64D.6322.对下列二叉树 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZD.ABCDEFXYZ23.对如下二叉树 (分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBF
8、CA24.对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。(分数:2.00)A.log 2 nB.n2C.nD.n+125.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )。(分数:2.00)A.63B.64C.6D.726.下列叙述中正确的是( )。(分数:2.00)A.对长度为 n 的有序链表进行查找,最坏情况下需要的比较次数为 nB.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n2)C.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(log 2 n)D.对长度为 n 的有序链表进行对分查找,最坏
9、情况下需要的比较次数为(nlog 2 n)27.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n 2 )C.O(log 2 n)D.O(nlog 2 n)28.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表29.冒泡排序在最坏情况下的比较次数是( )。(分数:2.00)A.n(n+1)2B.nlog 2 nC.n(n-1)2D.n230.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为( )。(分数:2.00)A.9B.10C.4
10、5D.9031.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(分数:2.00)A.冒泡排序为 n2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)232.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为( )。(分数:2.00)A.nB.n-1C.n(n-1)D.n(n-1)233.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序34.下列排序方法中,最坏情况下比较次数最少的是( )。(分数:2.00)A.冒泡排序B
11、.简单选择排序C.直接插入排序D.堆排序国家二级 C+机试(数据结构与算法)模拟试卷 7 答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:34,分数:68.00)1.下列叙述中正确的是( )。(分数:2.00)A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 B.循环队列中的元素个数随队头指针的变化而动态变化C.循环队列中的元素个数随队尾指针的变化而动态变化D.循环队列中的元素个数不会变化解析:解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针 rear 指向队列中的队尾元素,用队头指针
12、 from 指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针舶 nt 指向的后一个位置与队尾指针 rear 指向位置之间的元素数量。2.下列关于线性链表的叙述中,正确的是( )。(分数:2.00)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素 D.以上都不正确解析:解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确
13、定的。3.下列叙述中正确的是( )。(分数:2.00)A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 D.以上都不正确解析:解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。4.下列叙述中正确的是( )。(分数:2.00)A.线
14、性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.以上都不正确解析:解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。5.下列叙述中正确的是( )。(分数:2.00)A.线性表的链式存储结构与顺序存储结构所需要的存储空
15、间是相同的B.线性表的链式存储结构所需要的存储空问一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.上述三种说法都不对解析:解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域:另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。6.下列对于线性链表的描述中正确的是( )。(分数:2.00)
16、A.存储空间不一定连续,且各元素的存储顺序是任意的 B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的解析:解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针 head 称为头指针,当 head=NULL(或 0)时称为空表。7.下列叙述中正确的是( )。(分数:2.00)A.顺序存储结构的存储一定是连续的,链式存
17、储结构的存储空间不一定是连续的 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间解析:解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。8.下列链表中,其逻辑结构属于非线性结构的是( )。(分数:2.00)A.二叉链表 B.循环链表C.双向链表D.带链的栈解析:解析:二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。
18、9.下列叙述中正确的是( )。(分数:2.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构 C.循环链表是非线性结构D.双向链表是非线性结构解析:解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。10.某系统总体结构图如下图所示: (分数:2.00)A.7B.6C.3 D.2解析:解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第 1 层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共 3 层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为 3。11.下列关于二叉树的叙述中,正确的是( )
19、。(分数:2.00)A.叶子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个 C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍解析:解析:由二叉树的性质可以知道在二叉树中叶子结点总是比度为 2 的结点多一个。12.某二叉树中有 n 个度为 2 的结点,则该二叉树中的叶子结点数为( )。(分数:2.00)A.n+1 B.n-1C.2nD.n2解析:解析:在任意一棵二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。所以该二叉树的叶子结点数等于 n+1。13.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点
20、数是( )。(分数:2.00)A.10B.8C.6 D.4解析:解析:根据二叉树的性质,在任意二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。14.一棵二叉树共有 25 个结点,其中 5 个是叶子结点,则度为 1 的结点数为( )。(分数:2.00)A.16 B.10C.6D.4解析:解析:根据二叉树的性质,在任意二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个,故此度为 1 的结点个数=总结点数-叶子节点数=度为 2 的节点数=25-5-4=16。15.一棵二叉树中共有 80 个叶子结点与 70 个度为 1 的结点,则该二叉树中的总结点数为( )。(
21、分数:2.00)A.219B.229 C.230D.231解析:解析:根据二叉树的性质,在任意二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个,故总结点数=叶子节点数+度为 2 的节点数+度为 1 的节点数=80+79+70=229。16.一棵二叉树中共有 70 个叶子结点与 80 个度为 1 的结点,则该二叉树中的总结点数为( )。(分数:2.00)A.219 B.221C.229D.231解析:解析:在二叉树中,叶子结点个数为 n 0 ,则度为 2 的结点数 n 2 =n 0 -1。本题中叶子结点的个数为 70,所以度为 2 的结点个数为 69,因而总结点数=叶子结点数
22、+度为 1 的结点数+度为 2 的结点数=70+80+69=219。17.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层)( )。(分数:2.00)A.3B.4C.6D.7 解析:解析:根据二叉树的性质,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。题目中的二叉树的叶子结点为 1,因此度为 2 的结点的数目为 0,故该二叉树为 7 层,每层只有一个结点。18.某二叉树共有 12 个结点,其中叶子结点只有 1 个。则该二叉树的深度为(根结点在第 1 层)( )。(分数:2.00)A.3B.6C.8D.12 解析:解析:根据二叉树的性质
23、,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。题目中的二叉树的叶子结点为 1,因此度为 2 的结点的数目为 0,故该二叉树为 12 层,每层只有一个结点。19.设树 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。20.设一棵完全二叉树共有 700 个结点,则此二叉树中的叶子结点数为( )。(分数:2.00)A.
24、85B.120C.250D.350 解析:解析:具有 n 个结点的完全二叉树的深度为long 2 n+1,计算出该完全二叉树的深度为 10。 设度为 0 的结点(即叶子结点)为 n 0 ,度为 1 的结点为 n 1 ,度为 2 的结点为 n 2 ,总结点数为 n,深度为 k。n=n 1 +n 2 +n 0 ,由于 n 0 =n 2 +1 则 nv=n 0 -1,故 n=n 1 +n 0 -1+n 0 =n 1 +2n 0 -1。由于完全二叉树中度为 1 的结点数只有两种可能:0 或 1。 假设度为 1 的结点数为 0 即满二叉树,根据满二叉树的定义,其 2 m -1 个结点,根据以上计算所得的
25、深度 10 来计算,应有 2 m -1=1024-1=1023 个结点,显然与题目中 700 个结点不符。因此,度为 1 的结点数必然为 1。 故 n=n 1 +2n 0 -1=1+2n 0 -1=2n 0 ,则 n 0 =-n2=7002=350。21.在深度为 7 的满二叉树中,叶子结点的个数为( )。(分数:2.00)A.32B.31C.64 D.63解析:解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第 k 层上有 2 k-1 个结点,且深度为 m 的满二叉树有 2 m -1 个
26、结点。对于深度为 7 的满二叉树,叶子结点所在的是第 7 层,一共有 2 7-1 =64 个叶子结点。全部结点共 2 7 -1=127 个。22.对下列二叉树 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZ D.ABCDEFXYZ解析:解析:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:访问根结点;前序遍历左子树;前序遍历右子树。可见,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是 ABDYECFXZ。23.对如下二叉树 (分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
27、解析:解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项 D)为正确答案。24.对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。(分数:2.00)A.log 2 nB.n2C.n D.n+1解析:解
28、析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为 n 次。25.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )。(分数:2.00)A.63B.64 C.6D.7解析:解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素
29、(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。26.下列叙述中正确的是( )。(分数:2.00)A.对长度为 n 的有序链表进行查找,最坏情况下需要的比较次数为 n B.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n2)C.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(log 2 n)D.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(nlo
30、g 2 n)解析:解析:本题主要考查的知识点为查找技术。顺序查找的使用情况:线性表为无序表;表采用链式存储结构。二分法查找只适用于顺序存储的有序表,并不适用于线性链表。27.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n 2 )C.O(log 2 n) D.O(nlog 2 n)解析:解析:对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需比较 log 2 n 次,而顺序查找需要比较 n 次。28.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有
31、序线性链表解析:解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序(即从小到大,但允许相邻元素值相等)的表。29.冒泡排序在最坏情况下的比较次数是( )。(分数:2.00)A.n(n+1)2B.nlog 2 nC.n(n-1)2 D.n2解析:解析:对 n 个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过 n2 遍的从前往后的扫描和 n2 遍的从后往前的扫描,需要的比较次数为 n(n-1)2。30.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为( )。(分数:2.00)A.9B.10C.45 D.90解析:解析:线性表的长度为 n,最坏
32、情况下冒泡排序需要比较的次数为 n(n-1)2。31.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(分数:2.00)A.冒泡排序为 n2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)2 解析:解析:假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n2 遍的从前往后的扫描和n2 遍的从后往前的扫描,需要的比较次数为 n(n-1)2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。32.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为( )。(分数:2.00)A.nB.n-1C.
33、n(n-1)D.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 1.5 )、简单选择排序 n(n-1)2、堆排序 O(nlog 2 n)。34.下列排序方法中,最坏情况下比较次数最少的是( )。(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序 解析:解析:冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数为:n(n-1)2。而堆排序法在最坏的情况下需要比较的次数为 O(nlog 2 n)。其中堆排序的比较次数最少。