国家二级C++机试(数据结构与算法)模拟试卷16 (题后含答案及解
析)
题型有:1. 选择题
选择题
1. 下列叙述中正确的是
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 D.循环队列中元素的个数是由队头指针和队尾指针共同决定
正确答案:D 解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。 知识模块:数据结构与算法
2. 对于循环队列,下列叙述中正确的是 A.队头指针是固定不变的 B.队头指针一定大于队尾指针 C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
正确答案:D 解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加l时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。 知识模块:数据结构与算法
3. 下列叙述中正确的是
A.循环队列是队列的一种链式存储结构 B.循环队列是队列的一种顺序存储结构 C.循环队列是非线性结构 D.循环队列是一种逻辑结构
正确答案:B 解析:本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。 知识模块:数据结构与算法
4. 设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为
A.1 5 B.16 C.20
D.0或35
正确答案:D
解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数为0:第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素个数为35。 知识模块:数据结构与算法
5. 在容量为15的循环队列中,若头指针front=6,尾指针rear=9,则循环队列中的元素个数为
A.2 B.3 C.4 D.5
正确答案:B
解析:循环队列中,rear表示尾指针,front表示头指针,当有元素入队时,rear=rea+1,而元素出队的时候,front=front+1,当rear值大于front值时,队列中的元素个数为rear-front,当rear的值小于丘front时,列队中的元素个数为rear-front+m(m表示队列的容量)。 知识模块:数据结构与算法
6. 下列叙述中正确的是
A.栈是一种先进先出的线性表 B.队列是一种后进先出的线性表 C.栈与队列都是非线性结构 D.栈与队列都是线性结构
正确答案:D
解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。 知识模块:数据结构与算法
7. 下列叙述中正确的是
A.栈是“先进先出”的线性表 B.队列是“先进后出”的线性表 C.循环队列是非线性结构
D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
正确答案:D
解析:栈是“先进后出”,队列“是先进先出”。栈和队列都是一种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。 知识模块:数据结构与算法
8. 下列与队列结构有关联的是 A.函数的递归调用 B.数组元素的引用 C.多重循环的执行
D.先到先服务的作业调度
正确答案:D 解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。 知识模块:数据结构与算法
9. 下列叙述中正确的是
A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 B.循环队列中的元素个数随队头指针的变化而动态变化 C.循环队列中的元素个数随队尾指针的变化而动态变化 D.循环队列中的元素个数不会变化
正确答案:A
解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针front指向的后一个位置与队尾指针rear指向位置之间的元素数量。 知识模块:数据结构与算法
10. 下列关于线性链表的叙述中,正确的是
A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C.进行插入与删除时,不需要移动表中的元素 D.以上都不正确
正确答案:C
解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 知识模块:数据结构与算法
11. 下列叙述中正确的是
A.线性表链式存储结构的存储空间一般要少于顺序存储结构 B.线性表链式存储结构与顺序存储结构的存储空间都是连续的
C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 D.以上都不正确
正确答案:C
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。 知识模块:数据结构与算法
12. 下列叙述中正确的是
A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D.以上都不正确
正确答案:B
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。 知识模块:数据结构与算法
13. 下列叙述中正确的是
A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D.上述三种说法都不对
正确答案:B
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。 知识模块:数据结构与算法
14. 下列对于线性链表的描述中正确的是
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面 C.存储空间必须连续,且前件元素一定存储在后件元素的前面 D.存储空间必须连续,且各元素的存储顺序是任意的
正确答案:A
解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。 知识模块:数据结构与算法
15. 下列叙述中正确的是
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C.顺序存储结构能存储有序表,链式存储结构不能存储有序表 D.链式存储结构比顺序存储结构节省存储空间
正确答案:A 解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。 知识模块:数据结构与算法
16. 下列链表中,其逻辑结构属于非线性结构的是 A.二叉链表 B.循环链表 C.双向链表 D.带琏的栈
正确答案:A 解析:二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。 知识模块:数据结构与算法
17. 下列叙述中正确的是
A.有一个以上根结点的数据结构不一定是非线性结构 B.只有一个根结点的数据结构不一定是线性结构 C.循环链表是非线性结构 D.双向链表是非线性结构
正确答案:B
解析:在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。 知识模块:数据结构与算法
18. 某系统总体结构图如下图所示: 该系统总体结构图的深度是 A.7 B.6 C.3 D.2
正确答案:C
解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。 知识模块:数据结构与算法
19. 下列关于二叉树的叙述中,正确的是 A.叶子结点总是比度为2的结点少一个 B.叶子结点总是比度为2的结点多一个 C.叶子结点数是度为2的结点数的两倍
D.度为2的结点数是度为1的结点数的两倍
正确答案:B 解析:由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多一个。 知识模块:数据结构与算法
20. 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为 A.n+1 B.n一1 C.2n D.n/2
正确答案:A
解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以该二叉树的叶子结点数等于n+1。 知识模块:数据结构与算法
21. 某二又树有5个度为2的结点,则该二叉树中的叶子结点数是 A.10 B.8 C.6 D.4
正确答案:C
解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。 知识模块:数据结构与算法
22. 一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为
A.16 B.10 C.6 D.4
正确答案:A
解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为1的结点个数=总结点数-叶子节点数-度为2的节点数=25-5-4=16。 知识模块:数据结构与算法
23. 一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为
A.219 B.229 C.230 D.231
正确答案:B
解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故总结点数=叶子节点数+度为2的节点数+度为1的节点数=80+79+70=229。 知识模块:数据结构与算法
24. 一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为
A.219 B.221 C.229 D.231
正确答案:A
解析:在二叉树中,叶子结点个数为n0,则度为2的结点数n2=n0-1。本题中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点数+度为1的结点数+度为2的结点数=70+80+69=219。 知识模块:数据结构与算法
25. 某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)
A.3 B.4 C.6 D.7
正确答案:D
解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。 知识模块:数据结构与算法
26. 某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)
A.3
B.6 C.8 D.12
正确答案:D
解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。 知识模块:数据结构与算法
27. 设二叉树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为
A.8 B.7 C.6 D.5
正确答案:A
解析:任意树的结点数等于树的总分叉数+1;树的总分叉数公式为:1*4+2*2+3*1+4*1=15;因此,树的节点个数为16。树的总结点数公式为:总节点数=4+2+1+1+x,便可以得到等式:4+2+1+1+x=16;x=8为叶子数。 知识模块:数据结构与算法
因篇幅问题不能全部显示,请点此查看更多更全内容