408计算机试卷结构,2021年考研计算机408数据结构试题与解析(回忆版)
1、 已知指针指向一个带头结点的非空单循环链表,结点结构data、next,其中next是指向直接后继结点的指针,p是尾指针,q是临时指针。现要删除该链表的第一个元素,正确的语句序列是()
A. h->next=h->next->next;q=h->next;free(q);
B. q=h->next;h->next=h->next->next;free(q);
C. q=h->next;h->next=q->next;if(p!=q)p=h;free(q);
D. q=h->next;h->next=q->next;if(p=q)p=h;free(q);
答案:D
解析:
A选项中,h->next=h->next->next修改了头结点的后继,q指针指向的不是待删除的第一个结点,A错;
B选项中,假设这个链表中只剩下最后一个结点(即尾指针p指向的结点),q=h->next q指针指向带删除的第一个结点(最后一个结点),则删除后,还需要修改p指针,B错;
C、D选项中,q=h->next;h->next=q->next,q指针指向待删除的第一个结点,头结点指向第二个结点,此时若尾指针p和q指针指向同一个位置的话,则我们需要修改尾指针p,将其指向头结点(空单循环链表),则选D
2、 已知初始为空的队列Q的一端能进行入队操作又能进行出队操作,另一端能进行入队操作,若a的入队序列是1,2,3,4,5,则不可能得到的出队序列是()
A.5,4,3,1,2
B.5,3,1,2,4
C.4,2,1,3,5
D.4,1,3,2,5
答案:D
解析:
A选项,1左入右入都可,2右入,3左入,4左入,5左入,得到5,4,3,1,2
B选项,1左入右入都可,2右入,3左入,4右入,5左入,得到5,3,1,2,4
C选项,1左入右入都可,2左入,3右入,4左入,5右入,得到4,2,1,3,5
D选项,1左入右入都可,2右入,错误,3不可能在1和2的中间
3、 已知二维数组A按行优先方法存储,每个元素占用1个存储单元,起始地址A[0][0]为100,若元素A[3][3]的存储地址是220,则元素A[5][5]的存储地址是()
A.295
B.300
C.301
D.306
答案:B
解析:
首先分析题干信息,按行优先方法存储,二维数组的行、列下标都是从0开始,并且已知起始存储地址为100,假设二维数组有n行m列。
LOC(A[3][3])= LOC(A[0][0])+(3*m+4-1)*1=220,可以求出m=39
则LOC(A[5][5])= LOC(A[0][0])+(5*39+6-1)*1=300,选B
4、 某森林F对应的二叉树为T,若T的先序遍历序列是a,b,d,c,e,g,f,中序遍历序列是b,d,a,e,g,c,f,则F中树的棵树是()
A.1
B.2
C.3
D.4
答案:C
解析:
本题考查根据树的遍历序列构造一个唯一的二叉树,再将二叉树转换成对应的森林。
首先先构造二叉树:
根据孩子兄弟表示法转换成对应的森林:
则可以得到有3棵树,选C
5、 若某二叉树有5个叶子结点,其权值分别为10,12,16,21,30。则其最小的带权路径长度(WPL)是()
A.89
B.200
C.208
D.289
答案:B
解析:
本题考查哈夫曼树的构造,以及WPL的计算
WPL=(16+21+30)*2+(10+12)*3=200,选B
6、 给定平衡二叉树如下图所示,放入关键字23后根中的关键字是()
A.16
B.20
C.23
D.25
答案:D
解析:
插入23后,树的形态如下:
则根节点20不平衡,平衡因子为1-3=-2,则需要旋转调整后,得到平衡二叉树如下:
根为25,选D
7、 给定如下有向图,该图的拓扑有序序列的个数是()
A.1
B.2
C.3
D.4
答案:A
解析:
拓扑排序解决步骤如下:
(1)在有向图中选一个没有前驱(入度为0)的顶点且输出之。
(2)从图中删除该顶点和所有以它为尾的弧。
重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止。后一种情况则说明有向图中存在环。
根据此有向图,可得到拓扑排序序列只有一个:ABCDEF
1、 使用Dijkstra算法求下图中从顶点1到其余个顶点的最短路径,将当前找到的从顶点1到顶点2,3,4,5的最短路径长度保存在数组dist中,求出第二条最短路径后,dist中的内容更新为()没有图暂时无法给出答案与解析,后续补上
A.26,3,14,6
B.25,3,14,6
C.21,3,14,6
D.15,3,14,6
2、 在一棵高度为3 的3阶B树中,根为第一层,若第二层有4个关键字,则该树的结点个数最多是()
A.11
B.10
C.9
D.8
答案:A
解析:
根据B树的定义,3阶B树满足:除根之外的所有非终端节点至少有2棵子树;所有非终端结点的关键字个数n的取值范围为:1<=n<=2
已知根为第一层,若第二层有4个关键字,则该树第一层1个结点,3个分支,第二层3个结点,由于有4个关键字,所以3个结点的分支树分别为2,2,3,第三层7个结点。
总结点个数最多为1+3+7=11个,选A
11、设数组S={ 93,946,372,9,146,151,301,485,236,372,43,892},采用最低位优先(LSD)基数排序将S排列成升序序列,第一趟分配收集后,元素372之前,之后相邻的元素是()
A.43,892
B.236,301
C.301,892
D.485,301
答案:C
解析:
93,946,372,9,146,151,301,485,236,372,43,892
r=10
第一趟分配:
0
1
2
3
4
5
6
7
8
9
151
301
372
372
892
093
043
485
946
146
236
009
第一趟收集:
151,301,372,372,892,093,043,485,946,146,236,009(元素372之前,之后相邻的元素分别是301,892,选C)
第二趟分配:
0
1
2
3
4
5
6
7
8
9
301
009
236
143
946
146
151
372
372
485
892
093
第二趟收集:
301,009,236,143,946,146,151,372,372,485,892,093
第三趟分配:
0
1
2
3
4
5
6
7
8
9
009
093
143
146
151
236
301
372
372
485
892
946
第三趟收集:
009,093,143,146,151,236,301,372,372,485,892,946
12、将关键字6,9,1,5,8,4,7依次插入到初始为空的大根堆H中,得到的H是()
A.9,8,7,6,5,4,1
B.9,8,7,5,6,1,4
C.9,8,7,5,6,4,1
D.9,6,7,5,8,4,1
答案:C
解析:
题目要求根据给定的序列构造出大根堆,根据大根堆的构造思想,首先先将给定的序列看成是一棵完全二叉树的顺序存储结构,写出一棵完全二叉树,如图(1)。
调堆。首先找到第3个位置(第n/2)个位置上的节点,因为是要做大根堆,首先将第3号位的元素的左右孩子互相比较,找出较大者,再和根比较,比根大就和根交换,三号位的为9,比左右孩子都大,所以不用交换。之后再继续调整2号位,2号是1,最大孩子节点是7,所以1和7互换。最后调整1号位,一号位元素为6,左右孩子最大者是9,6和9互换,并且6调到3号位后,右孩子8又比他大,继续交换。最后结果,如图(2)所示。
C正确
41、已知无向连通图G由顶点集V和边集E组成|E|>0,当G中度为奇数的顶点个数为不大于2的偶数时,G存在包含所有边且长度为|E|的路径(称为EL路径),设图G采用邻接矩阵存储,类型定义如下:
Typedef struct{
Int numVevsticos,numEdges;
Char vert;lesList[MAXV];
Int edge[MAXV][MAXV];
};MGraph
请设计算法:int IsExistEL(MGraph G)
判断G是否存在EL路径,若存在,则返回1,否则,返回0,要求:
(1)给出算法的基本设计思想
(2)根据设计思想采用C或者C++语言描述算法,关键之处给出注释
(3)说明你所设计算法的时间复杂度和空间复杂度
注:此方法不一定是最优解,这里是给大家提供了一个最直接暴力的解题思路。
int IsExistEL(MGraph G ){
int i,j,n=0;
int count[MAXV]={0};
for(i=0;i
for(j=0;j
if(G.edge[i][j]==1)
count[i]++;
}
if(count[i]%2==1)
n++;
}
if(n<=2&&n%2==0){
printf("存在EL路径");
return 1;
}else return 0;
}
时间复杂度O(MAXV2)
空间复杂度O(MAXV)
42、有如下程序:
int i,j,*count;
count=(int *)malloc(sizeof(int)*n);
for(i=0;i
count[i]=0;
for(i=0;i
for(j=i+1;j
if(a[i]
count[j]++;
else
count[i]++;
for(i=0;i
b[count[i]]=a[i];
free(count);
问:
(1)实现的是什么?给个数据跑一遍结果是什么?(假设A[6]={9、10、5、12、7、5})具体数据可能与真题有出入
(2)n个数据的话比较几次?
(3)稳不稳定?
答案:
(1)实现非递减排序。结果为A[6]={5、5、7、9、10、12}
(2)比较n(n-1)/2次。(⑤的执行次数)
(3)不稳定。
解析:题中count[i]用来统计数组A中小于等于A[i]的元素的个数(count[0]中存放的是A数组中小于等于“A[0]”的元素个数),for循环②结束后count[6]={3、4、1、5、2、0},b[count[i]]用来实现按照count[i]值的大小重新对A[n]排序(以数组B[n]的形式,B[6]={5、5、7、9、10、12})。对于A数组中两个“5”“5”,count值分别是“1”“0”,所以会出现后一个“5”排到前边去的情况。
408计算机试卷结构,2021年考研计算机408数据结构试题与解析(回忆版)相关推荐
- 2021计算机专业考研科目,2021年考研计算机考试科目
2021考研备考已经开始,考研计算机学作为考研中重要科目,很多考生对于今年考研计算机学试题变化情况及难易程度比较关注,中公考研网整理发布"2021年考研计算机考试科目"内容,跟随中 ...
- 841南昌大学计算机考研,2020考研南昌大学841数据结构试题特点分析
2020考研初试已正式开始,中公考研网初试后为大家整理发布"2020考研南昌大学841数据结构试题特点分析"考研试题内容,中公考研各科研究院老师将对2020考研试题进行试题变化及难 ...
- 2021年山东省安全员B证试题及解析及山东省安全员B证作业模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 2021年山东省安全员B证试题及解析为正在备考山东省安全员B证操作证的学员准备的理论考试专题,每个月更新的山东省安全员B证作业模拟考试祝您顺利通过山东省安 ...
- 2021年山东省安全员C证试题及解析及山东省安全员C证作业考试题库
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:2021年山东省安全员C证试题及解析为正在备考山东省安全员C证操作证的学员准备的理论考试专题,每个月更新的山东省安全员C证作业考试 ...
- 2021年电工(中级)试题及解析及电工(中级)证考试
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:2021年电工(中级)试题及解析为正在备考电工(中级)操作证的学员准备的理论考试专题,每个月更新的电工(中级)证考试祝您顺利通过电 ...
- 2021年压力管道巡检维护试题及解析及压力管道巡检维护模拟考试题库
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:2021年压力管道巡检维护试题及解析为正在备考压力管道巡检维护操作证的学员准备的理论考试专题,每个月更新的压力管道巡检维护模拟考试 ...
- 2021年电工(初级)试题及解析及电工(初级)复审模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 2021年电工(初级)试题及解析为正在备考电工(初级)操作证的学员准备的理论考试专题,每个月更新的电工(初级)复审模拟考试祝您顺利通过电工(初级)考试. ...
- 2021年熔化焊接与热切割试题及解析及熔化焊接与热切割模拟考试题
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:2021年熔化焊接与热切割试题及解析为正在备考熔化焊接与热切割操作证的学员准备的理论考试专题,每个月更新的熔化焊接与热切割模拟考试 ...
- 2021年电工(初级)试题及解析及电工(初级)作业考试题库
题库来源:安全生产模拟考试一点通公众号小程序 电工(初级)试题及解析是安全生产模拟考试一点通总题库中随机出的一套电工(初级)作业考试题库,在公众号安全生产模拟考试一点通上点击电工(初级)作业手机同步练 ...
最新文章
- java jdk windows环境 下载安装配置环境变量
- .net 使用 Aspose.Words 进行 Word替换操作
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1091:求阶乘的和
- 使用PHP应用查询SAP HANA Express Edition里的数据
- python网页保存为图片_使用Python保存网页上的图片或者保存页面为截图
- 815 计算机专业基础综合,2018年华东理工大学信息科学与工程学院815计算机专业基础综合之计算机操作系统考研基础五套测试题...
- jQuery-input输入框下拉提示层
- python3.7安装, 解决pip is configured with locations that require TLS/SSL问题
- 13-栈的简单应用-递归
- Postgres不同数据库间访问
- Cocos2dx 3.0 过渡篇(二十六)C++11多线程std::thread的简单使用(上)
- 史上最全jquery视频教程
- java连接mysql数据库的详细步骤
- verilog实现格雷码(Gray Code)与二进制编码转换
- 汇编in和out介绍
- Java web实习报告
- linux 编译chromium,简易编译Chromium OS内核教程
- 最详细的 UART协议 分析在这里!
- 【转】奇文共欣赏,疑义相与析:原文转载《电脑维护技巧》(N条举措N条理由)并请大家交流研讨...
- 手机OA是什么?有何优点?
热门文章
- 关于CSMA/CA和CSMA/CD的区别
- c语言例题21:约德尔测试
- Jmeter设置HTTP代理服务器后浏览器无法联网
- 关于新创公司所需的icp,网文,软著和备案的申请
- 用python编写程序、判断某一年是否是闰年_恳求尽量编写下列程序题 6.编写程序,判断某一年是否是闰年。(闰年的条件是:能被4整除,但是不能...
- Unity3d游戏安装包 极限减少之 四分图、二分图 (NGUI向)
- Linux和DOS文件系统的区别,对比Linux文件系统和DOS文件系统
- 微软IE8中文正式版发布!(图)内有下载链接
- 腾讯云服务器标准型SA2与标准型S2区别选择攻略
- 别当工具人了,手把手教会你 Jenkins