【计算机考研408】2023考研408相关题目预测总结

news2025/2/1 14:49:49

目录

  • 数据结构
    • 选择1-时间复杂度
    • 选择2-栈或者队列
    • 选择3-二叉树、树、森林
    • 选择4-并查集
    • 选择5-红黑树
    • 选择6-图的概念
    • 选择7-图的应用
    • 选择8-B树(B-树)
    • 选择8-B+树
    • 选择8-B树与B+树的区别
    • 选择8-B树与B+树的相关应用
    • 选择9-查找算法
    • 选择10、11-排序算法
    • 综合应用题41-算法题
      • 反转链表1
      • 反转链表2
        • 题解
        • 代码
      • 2019年真题-链表逆置(头插法)
        • 题解
        • 代码
    • 综合应用题-42
      • 拓扑排序相关分析题
  • 计算机组成原理
    • 选择14-IEEE754浮点数的表示
    • 综合应用题43-存储系统相关
    • 综合应用题44-指令系统
  • 操作系统
    • 综合应用题45-PV-生产者消费者
    • 综合应用题46-内存管理
  • 计算机网络
    • 综合应用题47-围绕网络拓扑进行分析

数据结构

选择1-时间复杂度

对于递归函数的时间复杂度计算要多加注意

  • 2012年考察过递归的时间复杂度
  1. 斐波那契递归算法的时间复杂度
    朴素递归,其他有优化的斐波那契算法过于复杂,考试第一题一般不会出
int fib(int n) {
    if (n < 1) {
        return 0;
    } else if (n <= 2) {
        return 1;
    } else {
        return fib(n - 1) + fib(n - 2);
    }
}

时间复杂度O(2^n)
2. 简单递归函数

n = 1, T(n) = 1;
n > 1. T(n) = 2 * T(n / 2) + n;

题:简单起见,设n是2的整数次幂
n = 2 k n = 2^k n=2k
T ( n ) = T ( 2 k − 1 ) + 2 k = 2 k T ( 2 0 ) + k ∗ 2 k T(n) = T(2^{k-1}) + 2^k = 2^{k}T(2^{0}) + k*2^{k} T(n)=T(2k1)+2k=2kT(20)+k2k
将k换回n
T ( n ) = n ( l o g 2 n + 1 ) T(n) = n(log2n+1) T(n)=n(log2n+1)
时间复杂度O(nlog2n)

3.简单循环程序
按循环次数老实判断,2022年408第一题迷惑性还是很高的。

选择2-栈或者队列

选择3-二叉树、树、森林

选择4-并查集

并查集常见应用

  1. 克鲁斯卡尔求最小生成树
  2. 求无向连通图的连通分量
  3. 判断无向连通图的连通性

选择5-红黑树

  • 记忆:“”左根右、根叶黑、不红红、黑路同“
  • 时间复杂度
  1. 删除O(nlog2n)
  2. 插入O(nlog2n)
  3. 查找O(nlog2n)
  • 在一棵红黑树中,如果所有结点都是黑的,那么它的形态一定是满二叉树
  • 根节点黑高为h,关键字最少有 2 h − 1 2^{h}-1 2h1
  • 最多有 2 2 h − 1 2^{2h}-1 22h1
  • n个关键字的红黑树,高度不超过 2 l o g 2 ( n + 1 ) 2log2(n+1) 2log2(n+1)
  • AVL树的查找效率通常会稍微好一点,因为红黑树是一种相对平衡

选择6-图的概念

选择7-图的应用

  1. 最短路
  • Dijkstra 单源最短路,不适合负边权
  • Floyd 各顶点之间的最短路,允许负边权,但不允许带负权值的边的回路
  • 广度优先搜索查找最短路,主要是对无权图和等权图
    以上就可以考察,该图存在负边权,但不存在带负权值的回路,问下列哪个算法可以求解最短路?
    不过考察可能性不大,模拟算法的简单步骤更为有可能。
  1. 最小生成树
    性质
  • 最小生成树不唯一

  • 最小生成树树形不唯一

  • 各边权值互不相等时,唯一

  • 权值之和唯一

  • 对于生成树来说,加一条边,会形成一条回路,减一条边,会变成非调通图

  • 最小生成树的边数为顶点数-1

  • prim算法-point-加点-对边稠密

  • kruskal-加边-对边稀疏

  1. 有向无环图的描述表达式(注意化简即可)
  2. 拓扑排序(可能考算法分析题?)
  3. 关键路径(可能考算法分析题?)

选择8-B树(B-树)

2022年考察了B树的删除
对于B树的插入、失败节点n+1、

  1. 每个结点至多m颗子树,m-1个关键字
  2. 保证绝对平衡->根结点在非叶情况下至少有两个子树
  3. 叶子结点(失败结点,实际不存在),终端结点(叶子结点上一层结点)
  4. 最小高度-让每个结点尽可能地满,利用分叉去计算(n为树关键字的总数)
    ( m − 1 )( 1 + m + m 2 + . . . + m h − 1 ) = n (m-1)(1+m+m^2+...+m^h-1)=n m1)(1+m+m2+...+mh1)=n
  5. 最大高度-利用h+1层有失败节点个数为n+1个去计算(n为树关键字的总数)
    2 ∗ [ c e i l i n g ( m / 2 ) ] ( h − 1 ) = n + 1 2*[ceiling(m/2)]^(h-1)=n+1 2[ceiling(m/2)](h1)=n+1
    5.B树的高度通常不包括叶子结点

B树的插入
在这里插入图片描述

选择8-B+树

  • m阶B+树定义
  1. 同样最多m棵子树,最少ceiling(m/2)棵子树
  2. 关键字个数范围
    [ c e i l i n g ( m / 2 ) , m ] [ceiling(m/2),m] [ceiling(m/2),m]
  • 叶结点
  1. 叶结点有指向记录的指针
  2. 叶结点水平链接,以便于遍历查找

选择8-B树与B+树的区别

在这里插入图片描述

选择8-B树与B+树的相关应用

在这里插入图片描述
【参考2017年真题】B+树是应文件系统需要产生的B树的变形,前者比后者更适合实际应用中的操作系统的文件索引和数据库索引,因为前者的磁盘读写代价低,查询效率更加稳定。
(其他,编译器中词法分析使用的是有穷自动机和语法树,网络中路由表快速查找主要依靠高速缓存、路由表压缩技术、快速查找算法)

选择9-查找算法

选择10、11-排序算法

  1. 考察排序算法的概念
  2. 不同排序算法的差别

综合应用题41-算法题

反转链表1

题源1:反转链表1

比较简单,可以作为思想记忆,不太会这么直接考察

408可能考察链表的实现,

ListNode* reverseList(ListNode* head) {
        if(head == NULL) return NULL;
        //头插法
        ListNode * p = head;//工作指针,指向链表的最后一个位置,由于leetcode没有头结点后面相当于把最后一个结点当作头结点使用
        ListNode * q = head;
        while(p->next != NULL){
            p = p->next;
        }
        
        //开始头插
        //工作指针
        p->next = NULL;
        ListNode *r;
        while(q != p){
            r = q->next;
            q->next = p->next;
            p->next = q;
            q = r;
        }
        
        return p;
    }

反转链表2

题源2,反转链表2

题解

中等难度+链表,实际上是比较合适考研出题的。
代码量也不大。

  • curr:指向待反转区域的第一个节点 left;
  • next:永远指向 curr 的下一个节点,循环过程中,curr 变化以后 next 会变化;
  • pre:永远指向待反转区域的第一个节点 left 的前一个节点,在循环过程中不变。
    在这里插入图片描述

代码

ListNode* reverseBetween(ListNode* head, int left, int right) {
        
        //设置dummyNode
        ListNode *dummyNode = new ListNode(-1);//设置哑结点,就是头结点
        dummyNode->next = head;
    
        //已pre作为头结点进行头插法,使得left到right区域内反转
        ListNode * curr; //指向待反转区域的第一个结点
        ListNode * cnext; //curr的下一个结点
        ListNode * pre; //指向待反转区的前一个结点

        pre = dummyNode;
        for(int i = 0; i < left - 1; i++){
            pre = pre->next;
        }

        curr = pre->next;
        
        //拉直过后curr自己向后移动了,不需要再curr = curr->next
        for(int i = 0; i < right - left; i++){
            cnext = curr->next; //记录当前位置的下一个位置
            curr->next = cnext->next;
            cnext->next = pre->next;
            pre->next = cnext;          
        }
        return dummyNode->next;
    
    }

2019年真题-链表逆置(头插法)

题解

可以将头插法逆置分解为以下这几个步骤

注:图示2号是要头插的第一个元素,头结点是1号

  1. 头结点断开p->next = NULL;

  2. 当q不为空结点时,说明有元素进行头插法

​ (a)工作指针r指向要进行头插元素的后一个元素r=q->next;

​ (b)头结点的下一个结点指向要进行头插的结点,即为q结点p->next=q;[p的值是不会在头插过程中发生改变的,头插二字也可从此理解]

​ ©进行头插的结点断开q->next=NULL;

​ (d)头插下一个结点q=r;
在这里插入图片描述

代码

typedef struct LNode{
    ElemType data;
    struct Lnode *next;
} LNode, *LinkList;
void slove(LinkList * h){
    LinkList *p, *q, *r, *s;//工作指针
    p = q = h;
    //寻找中间结点
    while(q->next != NULL){
        p = p->next;
        q = q->next;
        if (p->next != NULL) p = p->next;
    }
    q = p->next; //令q指向后半段首结点
    p->next = NULL;
    //将后半段链表逆置
    while(q != NULL){
        r = q->next;
        q->next = p->next;
        p->next = q;
        q = r;
    }
    
    //逐一插入即可
    s = h->next;
    q = p->next;
	p->next = NULL;
    while(q != NULL){
        r = q->next;
        q->next = s->next;
        s->next = q;
        s = q->next;
        q = r;
    }
}

综合应用题-42

拓扑排序相关分析题

采用邻接表时间复杂度为O(|V|+|E|)采用邻接矩阵时间复杂度为O(|V|^2)

  1. 从AOV网中选择一个没有前驱的顶点并输出
  2. 从网中删除该顶点和所有以它为起点的有向边
  3. 重复1、2直至当前AOV网为空,或者是不存在无前驱的顶点为止。
    后一种情况说明,有向图中存在环
  • 可以考察拓扑排序的步骤
  • 考察判断一个有向图是否有环
    在这里插入图片描述
  • 问什么情况下拓扑排序不唯一,一个顶点有多个直接后继的时候
  • 对于一般的图来说,若其邻接矩阵是三角矩阵,则存在拓扑序列;但存在拓扑序列,其邻接矩阵不一定是三角矩阵

计算机组成原理

选择14-IEEE754浮点数的表示

综合应用题43-存储系统相关

关键词:cache-内存-外存、三级存储

综合应用题44-指令系统

关键词:MIPS、指令流水线、x86
个人觉得考MIPS的优先级会高于x86

操作系统

综合应用题45-PV-生产者消费者

  • 写优先
  • 读写公平法
  • 读优先(饥饿)

当有以下信息时候考虑是不是读者写者问题

  1. 两组并发进程
  2. 共享一个文件
  3. 两个或以上读者访问不会产生副作用
  4. 某个写进程和其他进程(读进程或写进程)同时访问就可能出错
  • 允许多个读者可以同时对文件执行读操作
  • 只允许一个写者往文件中写信息
  • 任一写者在完成写操作之前不允许其他读者或者写者工作
  • 写者执行写操作前,应让已有读者和写者退出、

于是,存在这么两组互斥关系

  1. 读者和写者互斥
  2. 写者和写者互斥
//读者进程
reader(){
    while(true){
    	p(WriteFirst);//如果在写则无法进行读
		//由于有多个读进程,所以对count的修改需要互斥
    	p(mutex);
        if(count == 0){
            //阻止写进程写
            p(WriteMutex);
        }
        count++;
        v(mutex);
        v(WriteFirst); //恢复对共享文件的访问
        
        reading;
        p(mutex);//读完修改count
        count--;
        if (count == 0){
            v(WriteMutex);//读完写进程才可以有机会进入;有P就有V
        }
        v(mutex);
    }
}
//写者进程
writer(){
    while(true){
		p(WriteFirst);//用于实现写优先
    
		p(WriteMutex);//用于实现写者与其他进程都互斥
			writing;
		v(WriteMutex);
	
    	p(WriteFirst);
	}
}
//信号量
semephore WriteFirst = 1; //写进程优先
semaphore WriteMutex = 1; //用于保证写者进程运行时,其他进程无法运行
semaphore mutex = 1; //实现对count的互斥访问
int count = 0;

例题:(王道冲刺课,教练与球员,更衣室)

教练=写者

球员=读者

更衣室=资源

writer(){
    while(true){
		p(WriteFirst);
    	p(WriteMutex);
    	教练使用更衣室;
    	v(WriteMutex);
    	v(WriteFirst);
	}
}
reader(){
    while(true){
        p(WriteFirst);
        
        p(mutex);
        if (count == 0){
            p(WriteMutex);
        }
        count++;
        v(mutex);
        v(WriteMutex);
        
        球员使用更衣室;
        
        p(mutex);
        count--;
        if (count == 0){
            v(WriteMutex);
        }
        v(mutex);
        
    }
}
//信号量
semephore WriteFirst = 1; //写进程优先
semaphore WriteMutex = 1; //用于保证写者进程运行时,其他进程无法运行
semaphore mutex = 1; //实现对count的互斥访问
int count = 0;

综合应用题46-内存管理

关键词:分页、内存和外存

计算机网络

综合应用题47-围绕网络拓扑进行分析

关键词:vlan、路由器、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UG/NX二次开发Siemens官方NXOPEN实例解析—2.3 Selection_UIStyler

列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer UG/NX二次开发Siemens官方NXOPEN实例解析—2.2 Selection UG/NX二次开发Siemens官方NXOPEN实例解析—2.3 Selection_UIStyler 列文章目录 文章目录 前言 一、知识点提取 二、案例需求分析 三、…

大数据期末总结

文章目录一、这学期分别接触了Linux&#xff0c;hadoop&#xff0c;hbase&#xff0c;hive1、Linux2、Hadoop3、hbase4、hive二、总结一、这学期分别接触了Linux&#xff0c;hadoop&#xff0c;hbase&#xff0c;hive 1、Linux Linux是一款安全性十分良好的操作系统。不仅有用…

前端监控与前端埋点方案

前端监控与前端埋点方案 https://blog.csdn.net/sinat_36521655/article/details/114650138 ​ 用户行为数据可以通过前端数据监控的方式获得&#xff0c;除此之外&#xff0c;前端还需要实现**性能监控和异常监控。**性能监控包括首屏加载时间、白屏时间、http请求时间和htt…

软件设计师

1.在项目初期的需求并不明确&#xff0c;需要不断同用户进行交流与沟通&#xff0c;分布获取功能要求&#xff0c;在这种情况要采用敏捷开发方法最适合&#xff0c;比如极限编程 2.设计模式包括&#xff1a;创建型&#xff0c;结构型&#xff0c;行为型三大类别。 创建型模式…

UnRaid添加镜像源加速应用安装的正确方法

文章目录0、前言1、寻找适合你网络的最优镜像源1.1、首先点击下图示红框处进入UnRaid的终端1.2、输入如下代码检测每一个镜像源的速度&#xff1a;2、更改镜像源方法2.1、修改Go文件方法2.2、用户自定义脚本方式2.2.1、安装User Scripts插件2.2.2、在User Scripts插件中添加更改…

【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测

文章目录1. 自动驾驶实战&#xff1a;基于Paddle3D的点云障碍物检测1.1 环境信息1.2 准备点云数据1.3 安装Paddle3D1.4 模型训练1.5 模型评估1.6 模型导出1.7 模型部署效果1. 自动驾驶实战&#xff1a;基于Paddle3D的点云障碍物检测 项目地址——自动驾驶实战&#xff1a;基于P…

已经拍好的视频怎么加水印?视频加水印方法大分享

现在不管是网课视频&#xff0c;还是一些视频博主自制的vlog&#xff0c;我们都可以在这些视频里面看到水印&#xff0c;它不仅可以防止他人盗用视频&#xff0c;还可以作为自己形象的宣传&#xff0c;吸引流量。不过现在还是有很多小伙伴不知道怎么给视频添加水印。别急&#…

js将图片url转化为base64

将以下代码复制封装于xxx.js文件中&#xff0c;放置在项目文件夹utiles下 /*** 把url转换为 canvas对象* param url 网络图片地址必须服务器设置允许跨域* returns {Promise<any>}*/ export default function urlToCanvas (url) {return new Promise((resolve) > {var…

2022卡塔尔世界杯 | 我与足球的爱恨情仇

超燃世界杯&#xff0c;决战卡塔尔⚽我与足球在生活上的交集一、小学二、中学三、大学&#x1f4bb;我与足球在技术上的碰撞一、与足球有关的题目训练二、使用Java代码做一个足球小游戏&#x1f3c6;2022卡塔尔世界杯冠军 —— 阿根廷yyds一、球队比赛过程二、热门球员介绍三、…

小学生C++编程基础 课程6(共9题)

Go C编程 第1课 神奇的魔笔 Go C编程 第1课 神奇的魔笔_dllglvzhenfeng的博客-CSDN博客_goc编程作品 GoC2018下册 第2课&#xff08;C画图&#xff09; GoC2018下册 第2课&#xff08;C画图&#xff09;_dllglvzhenfeng的博客-CSDN博客 Go C 编程 第3课 魔法自动机 Go C 编程…

C++:类和对象:继承

前言&#xff1a; 继承时面向对象额三大特性之一&#xff1a; 在面向对象中&#xff0c;有些类与类之间存在特殊关系&#xff0c;下级别的类除了拥有上一级别的共性&#xff0c;还有自己的特性&#xff0c;这个时候我们就需要考虑利用继承的技术减重复代码。 1&#xff1a;继承…

Redisson分布式锁

Redisson分布式锁 Redisson 是什么&#xff1f; Redisson是一个Java库&#xff0c;它为Redis服务器提供分布式和可扩展的Java对象和服务&#xff08;Set、Multimap、SortedSet、Map、Lock、Semaphore、CountDownLatch、Publish/Subscribe、Bloom filter等&#xff09;。它允许…

工控安全-S7协议

文章目录一、西门子PLC系统构成二、S7协议结构三、TPKT协议四、COTP协议4.1 COTP连接包4.2 COTP功能包五、S7Comm协议5.1 头(Header)5.2 作业请求(Job)和确认数据响应(Ack_Data)5.2.1 建立通信(Setup communication [0xF0])5.2.2 读取值(Read Var [0x04])5.2.2.1 当PDU为JOB时5…

redis之分片集群

0. 前言 在海量的数据面前&#xff0c;单个 redis 实例的能力是有限的&#xff0c;无可能无限增大的内存&#xff0c;所以必须要构建分片集群&#xff0c;来横向拓展来支持保存更多的数据。 1. 分片集群是什么&#xff1f; 分片集群主要是将 redis 的数据划分成多份&#xf…

BHG Mall 聚焦消费者需求,“超级宠粉节”缔造营销新高度

“如何读懂消费者&#xff1f;”处在行业关键转型期的购物中心&#xff0c;面临着这一待解的难题。 有哪些业态、品牌、商品让消费者着迷又上瘾&#xff1f;购物中心需要培养和消费者之间的默契&#xff0c;购物中心不仅要引领消费趋势、满足消费需求&#xff0c;还要深度融入…

Java+SSM宠物销售网站(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下&#xff1a; 后台框架&#xff1a;Spring、SpringMVC、MyBatis UI界面&#xff1a;JSP、jQuery 数据库&#xff1a;MySQL 该系统主要分为前台和后台两大功能模块&#xff0c;共包含两个角色&#xff1a;用户、管理员。 具体的系统功能如…

高分子PEG:DBCO-PEG-OPSS,OPSS-PEG-DBCO,二苯并环辛烯PEG邻吡啶二硫

【产品描述】 DBCO-PEG-OPSS中DBCO试剂可以自动标记叠氮化物修饰的生物分子&#xff0c;而不需要使用有毒的铜催化剂。聚乙二醇化可以提高多肽和蛋白质的溶解性和稳定性&#xff0c;降低其免疫原性。它还可以抑制带电分子与修饰表面的非特定结合。西安凯新生物科技有限公司点击…

html5:notification(浏览器通知)

一、notification简介 Web Notifications是HTML5 的一个特性&#xff0c;目前我知道的有谷歌浏览器和windows edge对它进行了支持&#xff0c;用于向用户配置和显示桌面通知。 二、notification方法 2.1静态方法 这些方法仅在 Notification 对象中有效。 Notification.requ…

5 种有效的电子邮件营销技巧可增加您的转化率

关键词&#xff1a;电子邮件营销、转化率 电子邮件营销是一种非常常见的策略&#xff0c;可以将客户吸引到您的网站并增加转化率。 由于如此普遍&#xff0c;消费者平均每天会收到 78 封新电子邮件。您的电子邮件周围充满了噪音。 那么&#xff0c;您可以做些什么来让您的电子邮…

架构师必读 —— 逻辑模型(10)

以零基础思考摆脱障碍 我们已养成了惰性思考及在其延伸下不断堆叠的思考习惯。 因为以往的方式未出现过重大错误&#xff0c;所以总以为会万无一失。 但是&#xff0c;如果用堆叠式思考方式继续沿用上一年度的做法的话&#xff0c;不管过多少年也很难破旧立新。有时我们有必要重…