国家二级VB机试(公共基础知识)模拟试卷9
选择题
1.下列叙述中正确的是( )。(B)
A. 所谓算法就是计算方法
B. 程序可以作为算法的一种描述方法
C. 算法设计只需考虑得到计算结果
D. 算法设计可以忽略算法的运算时间
解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法。
2.设数据结构B=(D,R),其中
D={a,b,c,d,e,f}
R={(f,a),(d,b),(e,d),(c,e),(a,c)}
该数据结构为( )。(A)
A. 线性结构
B. 循环队列
C. 循环链表
D. 非线性结构
解析:数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了D中各数据元素之间的前后件关系,通常记为R。即一个数据结构可以表示成B=(D.R)。其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设a与b是D中的两个数据,则二元组(a,b)表示a是b的前件,b是a的后件。本题中R中的根结点为f,元素顺序为f→a→c→e→d→b,满足线性结构的条件。
3.下列叙述中正确的是( )。(A)
A. 在栈中,栈顶指针的动态变化决定栈中元素的个数
B. 在循环队列中,队尾指针的动态变化决定队列的长度
C. 在循环链表中,头指针和链尾指针的动态变化决定链表的长度
D. 在线性链表中,头指针和链尾指针的动态变化决定链表的长度
解析:在栈中,通常用指针top来指示栈顶的位置,用指针bottom指向栈底。栈顶指针top动态反应了栈中元素的变化情况。在循环队列中,队头指针和队尾指针的动态变化决定队列的长度。链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,故头指针和尾指针或栈顶指针无法决定链表长度。
4.设有栈S和队列Q,初始状态均为空。首先依次将A,B,C,D,E,F入栈,然后从栈中退出三个元素依次入队,再将X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为( )。(B)
A. DEFXYZABC
B. FEDZYXCBA
C. FEDXYZCBA
D. DEFZYXABC
解析:栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。队列是指允许在一端进行插入,而在另一端进行删除的线性表。将A,B,C,D,E,F入栈后,栈中元素为ABCDEF,退出三个元素入队,队列元素为FED,将X,Y,Z入栈后栈中元素为ABCXYZ,退栈全部入队后,队列元素为FEDZYXCBA。
5.在线性表的链式存储结构中,其存储空间一般是不连续的,并且( )。(C)
A. 前件结点的存储序号小于后件结点的存储序号
B. 前件结点的存储序号大于后件结点的存储序号
C. 前件结点的存储序号可以小于也可以大于后件结点的存储序号
D. 以上三种说法均不正确
解析:在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,因此前件结点的存储序号与后件结点的存储序号之间不存在大小关系。
6.某带链的队列初始状态为front=rear=NULL。经过一系列正常的入队与退队操作后,front=rear=10。该队列中的元素个数为( )。(B)
A. 0
B. 1
C. 1或0
D. 不确定
解析:带链队列空时,头指针和尾指针都为NULL;队列中只有一个元素时,头指针和尾指针都指向这个元素。
7.度为3的一棵树共有30个结点,其中度为3,1的结点个数分别为3,4。则该树中的叶子结点数为( )。(B)
A. 14
B. 15
C. 16
D. 不可能有这样的树
解析:设叶子结点数为n,则度为2的结点效为30-3-4-n=23-n,根据树中的结点数=树中所有结点的度之和+1,得3×3+2×(23-n)+1×4+0×n+1=30,则n=15。
8.在具有2n个结点的完全二叉树中,叶子结点个数为( )。(A)
A. n
B. n+1
C. n-l
D. n/2
解析:由二叉树的定义可知,树中必定存在度为0的结点和度为2的结点,设度为0结点有a个,根据度为0的结点(即叶子结点)总比度为2的结点多一个,得度为2的结点有a-1个。再根据完全二叉树的定义,度为1的结点有0个或1个,假设度1结点为0个,a+0+a-1=2n,得2a=2n-1,由于结点个数必须为整数,假设不成立;当度为1的结点为1个时,a+1+a-1=2n,得a=n,即叶子结点个数为n。
9.某二叉树的中序遍历序列为CBADE,后序遍历序列为CBEDA,则前序遍历序列为( )。(C)
A. CBADE
B. CBEDA
C. ABCDE
D. EDCBA
解析:二叉树的后序遍历序列为CBEDA,由于后序遍历最后访问根结点,可以确定该二叉树的根结点是A。再由中序遍历序列为CBADE,可以得到子序列(CB)一定在左子树中,子序列(DE)一定在右子树中。结点C、B在中序序列和后序序列中顺序未变,说明结点B是结点C的父结点;结点D、E在中序序列和后序序列中顺序相反,说明结点D是结点E的父结点。因此该二叉树的前序遍历序列为ABCDE。
10.设二叉树中共有15个结点,其中的结点值互不相同。如果该二叉树的前序序列与中序序列相同,则该二叉树的深度为( )。(C)
A. 4
B. 6
C. 15
D. 不存在这样的二叉树
解析:在具有n个结点的二叉树中,如果各结点值互不相同,若该二叉树的前序序列与中序序列相同,则说明该二叉树只有右子树,左子树为空,二叉树的深度为n;若该二叉树的后序序列与中序序列相同,则说明该二叉树只有左子树,右子树为空,二叉树的深度为n。故本题中二叉树的深度为15。
11.线性表的长度为n。在最坏情况下,比较次数为n-1的算法是( )。(C)
A. 顺序查找
B. 同时寻找最大项与最小项
C. 寻找最大项
D. 有序表的插入
解析:顺序查找要逐个查看所有元素,会比较n次。在最坏情况下,寻找最大项无论如何需要查看表中的所有元素,n个元素比较次数为n-1。同时寻找最大项和最小项,需要为判断较大值和较小值分别进行比较,会有更多的比较次数。有序表的插入最坏情况下是插入到表中的最后一个元素的后面位置,则会比较n次。
12.下列各组排序法中,最坏情况下比较次数相同的是( )。(C)
A. 简单选择排序与堆排序
B. 简单插入排序与希尔排序
C. 冒泡排序与快速排序
D. 希尔排序与堆排序
解析:对于长度为n的线性表,最坏情况下查找或排序的次数如下表:
本文档预览:3600字符,共8341字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载