当前位置: 首页 > article >正文

14年数据结构

第一题

解析:

求时间复杂度就是看程序执行了多少次。

假设最外层执行了k次,我们看终止条件是k=n,则:

2^{k}=n,k=\log 2 (n),

内层是一个j=1到j=n的循环,显然执行了n次。

总的时间复杂度是内层×外层=\log 2(n)\times n=n\log 2(n)

答案选C。

第二题

解析:

一步一步来分析栈内元素的变化:

输出a\rightarrow/存入栈中\rightarrowb输出\rightarrow/输出\rightarrow

此时栈:/

此时轮到+,+相对比/不够强,所以+不能直接进,需要先将/输出,然后+再进入。

此时栈:+

+存入栈中\rightarrow

然后是‘(’,‘(’够强,直接进入。

(存入栈中\rightarrow

此时栈:+ (

接着是c,c直接输出,然后是*,*够强直接存入栈中,d直接输出。

c输出\rightarrow*存入栈中\rightarrowd输出

此时栈:+ ( *

然后是-号,-号不够强,需要*先输出,-再进入。

*输出\rightarrow-存入栈中\rightarrow

此时栈:+ ( -

然后是e,e直接输出,*够强存入栈中,f输出。

e输出\rightarrow*存入栈中\rightarrowf输出

此时栈:+ ( - *

然后是),)有着和(配对的特点,需要将()一起输出出来。

( - * )输出\rightarrow

此时栈:+

最后是/g,/够强直接存入栈中,g直接输出。

/存入栈\rightarrowg输出

此时栈:+ /

题目问扫描到f时,栈的情况,直接看f。

答案选B

第三题

解析:

end1指向A[0],end2指向队尾元素的后一个位置,如果end2指向A[1],那就说明表内还有一个元素,肯定不对。

首先,队列为空时,对头指针和队尾指针中间肯定没有位置,也就是说这两个指针都指向同一个位置,end1=end2,直接排除C和D

这种题,画个图就很好解决了:

数组的大小不难看出是M个,但是题目说队列最多能容纳M-1个元素,那就代表队列种最后一个元素的序号是M-2,end2指向最后一个元素的后一个位置,end2=M-1,如图可知,(end2+1)mod M=end1

第四题

解析:

直接写出图示二叉树的中序遍历序列:左根右

d e b x a c

很显然x的左右是ba很显然选D

第五题

解析:

对付这种题直接画一个特殊的树就好了:树转二叉树:兄弟变成右子树,孩子变成左子树。

叶子结点没有孩子,我们说树转二叉树的过程中,孩子会变成左子树,左孩子指针为空也就是没有左字数,也就代表该结点没有孩子,没有孩子的结点就是叶子结点。

答案选C

第六题

解析:

对于一个前缀编码有一个特点叫前缀不是前缀:对于一个前缀编码里面的任何一个元素都不是其它元素的前缀。

我们看D选项:

110是1110的前缀,D错

答案选D。

第七题:

解析:一个一个分析选项;拓扑序列是每次找入度为0的结点,并删除与之相连的线。

A:24显然不对,2的入度不是0,56显然不对,5的入度不是0        A错

B:和A一样的问题:24

C:和A一样的问题:56

答案选D

第八题:

解析:
存储效率和装填因子反应的是,顺序表中已经存储或者说装填的元素个数/总个数,和堆不堆积没关系。A和C错。

直接影响的应该是查找效率,在不堆积的情况下,查找效率高,通常能一次直接命中,如果发生了堆积,查找到当前位置发现不是该元素后,可能还要依次向后查找,以线性探测法为例。大大增大了查找长度。

答案选D

第九题

解析:

回顾一下B树的性质:

对于n阶B树的根节点,关键字的个数是[1,n-1]

对与n阶B树的非根结点,关键字的个数是【[n/2]向上取整-1,n-1】

回到这题:

题目要含关键字的结点个数最多,因为关键字的个数是有限的是15个,则要使每个结点的关键字最少。

我们可以算出,根节点最少是1个关键字,非根结点最少是4/2-1=1个关键字。

B树是一个完全二叉树。

因此直接画图:

正好是15个结点

选D。

第十题:

解析:

回顾一下希尔排序:设置一个间隔d,依次对i,i+d这两个元素进行排序。

也就是说经过一趟排序之后,间隔为d的两个元素,一定是有序的。

A.d=2,9-1是减序,1-13是升序,显然错。

B.d=3,B对

答案选B

第十一题:

解析:

快速排序每次都能确定一个元素的最终位置,且这个元素的左边都小于这个元素,这个元素的右边都大于这个元素。

经过两趟排序,至少能确定两个元素的最终位置。

我们直接写出排好序的最后的顺序是:2,3,4,5,6,7,9

A.23679的位置对了

B.29的位置对了

C.就一个9的位置是对的,我们说至少能确定两个元素的位置,C错

D.59的位置是对的。


http://www.kler.cn/a/320224.html

相关文章:

  • WQ9101 WIFI6模组移植实操
  • 【Pythonr入门第二讲】你好,世界
  • 【东莞石碣】戴尔R740服务器维修raid硬盘问题
  • 独立开发:一人公司模式下副业产品的全流程
  • 在MATLAB中导入TXT文件的若干方法
  • 51单片机--- 矩阵按键仿真
  • oracle direct path read处理过程
  • 接口调用工具-HttpClient,HttpUtil,RestTemplate
  • Spring Security - 用户授权
  • 1数据结构与算法-前言
  • OpenCV图像文件读写(3)统计多页图像文件中的页面数量函数imcount()的使用
  • 机器学习中的元强化学习
  • Fusion Access
  • 聚焦Llama新场景和AR眼镜,扎克伯格用AI赋能元宇宙,Meta Connect 2024开发者大会直播约起...
  • linux创建固定大小的文件夹用于测试
  • 编译器和解释器
  • 面试真题 | 小红书-C++引擎架构
  • 如何使用ssm实现线上旅游体验系统+vue
  • 【建设方案】智慧工业园区解决方案(PPT)
  • 【SpringCloud】01-远程调用
  • TS系列(2):类型声明、类型推断和类型总览
  • Redis|基础学习
  • 便捷将屏幕投射到安卓/iOS设备-屏幕投射到安卓/iOS设备,Windows/Mac电脑或智能电视上-供大家学习研究参考
  • Android 布局RecyclerView布局介绍
  • 【数据结构】剖析二叉树(Binary Tree)
  • 低代码BPA(业务流程自动化)技术探讨