17年数据结构考研真题解析

第一题:

解析:

我们说递归要找出口,这道题的出口是sum<n,经过观察可以得知:sum=1+2+3+。。。+k

设第k次循环跳出,则有sum=1+2+3+。。。+k=<n

k<,很显然答案选B

第二题:

解析:

第一句:你都采用非递归方式了,还必须使用栈,完全是错的。1错

第二句:例如s(n)=s(n-1)+1,栈内就要依次存s(n),s(n-1),s(n-2)。。。2对

第三句:确定了入栈次序,可能得到很多种出栈次序。3错

第四句:前半段对,栈只允许对栈顶元素进行操作。4错

答案选C

第三题:

解析:

这道题当一个结论记一下就好了:适合存储稀疏矩阵的是三元组表和十字链表

邻接矩阵适用于存储稠密矩阵,排除BD

二叉链表是和数有关的,排除C

三元组表:(1,3,6)

十字链表

第四题:

解析:

先序序列:根左右

中序序列:左根右

要想两者相同,根左和左根相同,而根是一定存在的,只能没有左的时候,序列就剩下了根右,此时两种序列是相同的,此时没有左子树,只有右子树,答案选B

第五题:

解析:

我们可以把图中所有的点都标上数字;写出的数字版的后续序列,然后一一对应就行了。

最后得出二叉树如下:如图所示,与a同层的结点是d

第六题:

解析:

从头开始读这个编码序列,读到一个序列和前面的编码相同,就能的出一个字母。

第七题:

解析:

在无向图中,边和度关系是1条边对应2个度。

题目里面是16条边,代表总共的度是32。

n4=3,n3=4,剩下的顶点的度小于3,即为n2,n1,n0

32 = 4×3+3×4 +n2×2+n1×1

我们说要使顶点个数最少,则尽量让度大的顶点个数最多,即剩下的点全是度是2的点。

32 = 4×3+3×4 +n2×2,求出n2 = 4个

图G顶点个数是3+4+4=11个

答案选A。

第八题

解析:

当结点个数是奇数时:例如:0,1,2

不管向上取整还是向下取整,mid都能指向最中间的数折半,例如0,1,2时,mid指向的就是1,此时左右两个子树高度差为0;

当结点个数是偶数时:例如:0,1,2,3

,向下取整就是右子树高度多1层,向上取整就是左子树高度多一层。

此时左右两个子树高度差是:1;
第九题:

解析:

这道题当作结论来记:关系数据库系统中的索引适合使用B+树

索引表和顺序表很像:

B+树也是一个顺序表。

第十题:

解析:

对于硬件本身关注的是程序执行的效率,也就是时间复杂度,而不是程序代码的多少,只有程序员阅读的时候才会关注代码的多少,所以第一句错误。

直接选择排序的空间复杂度是O(1)

归并排序的空间复杂度是O(n),它需要从新开辟一个新的同等大小的数组来存排序后的序列。

显然直接选择排序的空间复杂度更少,所以第二句错误。

归并排序的时间复杂度是O(nlogn)

直接插入排序的时间复杂度是O(n^2)

显然归并排序的算法效率更高,答案选B

第十一题:

解析:

考察顺序存储和链式存储的比较,显然顺序存储具有随机查询的特点,能一次定位到目标元素,因此这种存储方式适合查询时,跳来跳去的情况,链式存储适合多次修改(增删)。

插入排序,选择排序,起泡排序都是相邻两个元素进行比较,此时顺序存储和链式存储的时间效率没有太大区别。

希尔排序每次需要找到增量d的元素进行比较,堆排序每次比较的两个元素间隔也比较大,因此使用顺序存储能更快的找出要比较的元素。

答案选D

相关推荐
啵一杯1 小时前
leetcode1801. 积压订单中的订单总数
数据结构·算法
pranaa1 小时前
数据结构:树的定义及其性质
数据结构·数据库·算法
The丶Closer1 小时前
10. 排序
java·数据结构·算法·排序算法
liuyang-neu2 小时前
力扣 简单 104.二叉树的最大深度
java·数据结构·算法·leetcode
是小恐龙啊2 小时前
单链表的增删改查(数据结构)
c语言·开发语言·数据结构·算法
CylMK3 小时前
浅说差分算法(上)
数据结构·c++·算法
gywl5 小时前
数据结构-栈
数据结构
Catherine1213145 小时前
算法打卡 Day34(贪心算法)-分发饼干 + 摆动序列 + 最大子序和
数据结构·c++·算法·leetcode·贪心算法
金池尽干7 小时前
数据结构之——队列
数据结构