国家二级ACCESS机试选择题(数据结构与算法)模拟试卷15(总分:64.00,做题时间:90分钟)一、选择题(总题数:32,分数:64.00)1.设循环队列为Q(1:m),其初始状态为front=rear=m。
经过一系列入队与退队运算后,front=15,rear=20。
现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为(分数:2.00)A.4 √B.6C.m-5D.m-6解析:解析:初始状态为:front=rear=m,rear-front=0,此时队列为空。
经过一系列入队与退队运算后,front=15,rear=20。
队尾大于队头,则队尾rear减队头front等于5个元素。
此时队列中有5个元素,而查找最大项至少要比较n.1次,就是4次。
因此选项A正确。
2.下列叙述中正确的是(分数:2.00)A.循环队列属于队列的链式存储结构B.双向链表是二叉树的链式存储结构C.非线性结构只能采用链式存储结构D.有的非线性结构也可以采用顺序存储结构√解析:解析:顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构。
例如,完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式。
3.某二叉树中有n个叶子结点,则该二叉树中度为2l的结点数为(分数:2.00)A.n+1B.n-1 √C.2nD.n/2解析:解析:任意一棵二叉树,如果叶结点数为N 0,而度数为2的结点总数为N 2,则N 0 =N 2 +1;N 2 =N 0 -1。
所以如果二叉树中有n个叶子结点,则该二叉树中度为2的结点数为n-1。
因此选项B正确。
4.下列叙述中错误的是(分数:2.00)A.算法的时间复杂度与算法所处理数据的存储结构有直接关系B.算法的空间复杂度与算法所处理数据的存储结构有直接关系C.算法的时间复杂度与空间复杂度有直接关系√D.算法的时间复杂度与空间复杂度没有必然的联系解析:解析:算法的时间复杂度,是指执行算法所需要的计算工作量。
算法的空间复杂度,是指执行这个算法所需要的内存空间。
两者与算法所处理数据的存储结构都有直接关系,但两者之间没有直接关系,因此选项C错误。
5.设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。
则栈中的元素个数为(分数:2.00)A.30B.29C.20 √D.19bottom=49,栈顶指针top=30时,栈中的元素个数为:栈底-栈顶+1=49-30+1=20。
因此选项C正确。
6.某二叉树的前序序列为:ABCDEFG,中序序列为:DCBAEFG,则该二叉树的深度(根结点在第1层)为(分数:2.00)A.2B.3C.4 √D.5解析:解析:该二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,可知A为根结点,结点B、C、D位于根结点的左子树上,结点E、F、G位于根结点的右子树上;并且结点B、C、D在前序序列和中序序列中顺序颠倒,则说明这三个结点依次位于前一个结点的左子树上;结点E、F、G顺序未变,则说明这三个结点依次位于前一个结点的右子树上。
所以得到的二叉树为:所以这个二叉树的深度为4。
选项C为正确答案。
7.下列叙述中正确的是(分数:2.00)A.存储空间连续的数据结构一定是线性结构B.存储空间不连续的数据结构一定是非线性结构C.没有根结点的非空数据结构一定是线性结构D.具有两个根结点的数据结构一定是非线性结构√解析:解析:数据结构从逻辑上来划分,分为线性结构和非线性结构,一对一是线性结构,其它的为非线性结构。
判断一个非空的数据结构是否为线性结构必须满足以下两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。
根据这两个条件,可知选项A)、B)和C)都不能判定是否是线性结构。
8.下列叙述中正确的是(分数:2.00)A.带链队列的存储空间可以不连续,但队头指针必须大于队尾指针B.带链队列的存储空间可以不连续,但队头指针必须小于队尾指针C.带链队列的存储空间可以不连续,且队头指针可以大于也可以小于队尾指针√D.以上三项都错误解析:解析:带链队列的存储空间可以不连续,且队头指针与队尾指针大小没有可比性,选项C正确。
9.设循环队列为Q(1:m),其初始状态为front=rear=m。
经过一系列入队与退队运算后,front=20,rear=15。
现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为(分数:2.00)A.5B.6C.m-5D.m-6 √解析:解析:在循环队列中元素的个数为“(rear-front+M)%M”,式中rear为队尾指针,front为队首指针,M为存储容量,%为取余符号。
对于找最小值的最坏情况下的比较次数,为循环队列中元素值个数减一。
所以对于这个题目来说初始时元素个数为0;运算后,元素个数为m-5,找最小值的最坏情况下的比较次数为m-5-1=m-6。
10.某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的后序序列为(分数:2.00)A.EFGDCBAB.DCBEFGAC.BCDCGFEAD.DCBGFEA √解析:解析:该二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,可知A为根结点,结点B、C、D位于根结点的左子树上,结点E、F、G位于根结点的右子树上;并且结点B、C、D在前序序列和中序序列中顺序颠倒,则说明这三个结点依次位于前一个结点的左子树上;结点E、F、G顺序未变,则说明这三个结点依次位于前一个结点的右子树上。
根据以上分析,可以画出这个二叉树的形状如下:根据该二叉树,可得出后序遍历序列为:DCBGFEA,选项D正确。
11.下列叙述中正确的是(分数:2.00)A.在链表中,如果每个结点有两个指针域,则该链表一定是非线性结构B.在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构√C.在链表中,如果每个结点有两个指针域,则该链表一定是线性结构D.在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构解析:解析:选项A叙述是错误的,如在双向链表中,每个结点有两个指针域,但该链表是线性结构;选项C叙述也是错误的,如每个二叉树的结点都有两个指针域,但是其结构是非线性结构;选项D叙述也是错误的,线性结构只有唯一的一个前驱和唯一的一个后继(头、尾除外);排除法可判断选项B正确。
12.下列叙述中错误的是(分数:2.00)A.在带链队列中,队头指针和队尾指针都是在动态变化的B.在带链栈中,栈顶指针和栈底指针都是在动态变化的√C.在带链栈中,栈顶指针是在动态变化的曼.但栈底指针是不变的D.以上三项都错误解析:解析:栈是只在一端进行增加和删除的线性表,进行操作的那端称为栈顶,另一端称为栈底。
所以在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的,选项C的说法正确,选项B的说法是错误的。
队列是允许在队列的头和尾都可以进行操作的线性表,所以在带链队列中,队头指针和队尾指针都是在动态变化的选项A这一说法是正确的。
13.设数据元素的集合D={112,3,4,5),则满足下列关系R的数据结构中为线性结构的是(分数:2.00)A.R={(1,2),(3,4),(5,1)}B.R={(1,3),(4,1),(3,2),(5,4)} √C.R={(1,2),(2,3),(4,5)}D.R={(1,3),(2,4),(3,5)}解析:解析:把每个答案中的第一个元素集合取出来,例如A:(1,2),先写下来就是12,然后看后面的(3,4),在(1,2)中找不到前驱和后继,只能和(1,2)暂时先并列,然后是(5,1),这里我们已经写过12了,那么5在1前面就是512,但是34要单排,所以A就是两个根节点3和5,两个顺序是512,34。
同理选项B是541,32;选项C是:123和45;选项D是135,24所以选项B正确。
14.下列叙述中正确的是.(分数:2.00)A.链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构√B.线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针C.线性表的链式存储结构中,每个结点只能有一个指向后件的指针D.线性表的链式存储结构中,叶子结点的指针只能是空解析:解析:在链式存储方式中,每个结点由两部分组成:数据域和指针域,指针域用于指向该节点的前一个或后一个结点,所以选项B、C、D说法错误。
选项A中,例如双向链表就具有两个指针,也属于线性结构,所以选项A正确。
15.一个栈的初始状态为空,现将元素A、B、C、D、E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。
则元素退队的顺序为(分数:2.00)A.ABCB.CBAC.EDC √D.CDE解析:解析:栈是根据先进后出的原则组织数据,所以退栈三次的元素依次为E、D、C;队列是根据先进先出的原则组织数据的,所以退队的顺序依次为E、D、C,所以选项C正确。
16.某二叉树中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为(分数:2.00)A.5B.4 √C.3D.2解析:解析:该二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,可知A为根结点,结点B、C、D位于根结点的左子树上,结点E、F、G位于根结点的右子树上;并且结点B、C、D在中序序列和后序序列中顺序未变,则说明这三个结点依次位于前一个结点的左子树上:结点E、F、G顺序颠倒,则说明这三个结点依次位于前一个结点的右子树上。
根据以上分析,该二叉树的深度为4,所以选项B正确。
17.下列叙述中正确的是(分数:2.00)A.所谓算法就是计算方法B.程序可以作为算法的一种描述方法√C.算法设计只需考虑得到计算结果D.算法设计可以忽略算法的运算时间解析:解析:算法是一组有穷指令集,是解题方案的准确而完整的描述。
通俗地说,算法就是计算机解题的过程,重在解题方案的设计,并且不等于计算方法,故选项A和选项C不正确。
程序的编制不可能优于算法的设计,但算法的描述可以用程序、伪代码、流程图来描述,故选项B正确。
算法要求执行过程中所需要的基本运算次数和时间最少,即时间复杂度最低,所以选项D错误。
18.下列各序列中不是堆的是(分数:2.00)A.(91,85,53,36,47,30,24,12)B.(91,85,53,47,36,30,24,12)C.(47,91,53,85,30,12,24,36) √D.(91,85,53,47,30,12,24,36)解析:解析:堆可以看成一棵完全二叉树:任一根节点>=左右孩子(或者<=),(大的叫大根堆,小的叫小根堆)。