1-4章节总结
- 章节重点回顾-第一章-中央处理单元
- 练习题
- 章节重点回顾-第一章-进制
- 章节重点回顾-第一章-校验码
- 奇偶校验码
- CRC循环冗余校验码
- 海明码
- 练习题
- 多草节重点回顾-第一草-计算机体系结构分类
- 章节重点回顾-第一章-计算机指令
- 练习题
- 章节重点回顾-第一章-指令流水线
- 练习题
- 章节重点回顾-第一章-总线
- 练习题
- 章节重点回顾-第一章-安全威胁
- 章节重点回顾-第一章-加密技术
- 对称加密
- 非对称加密
- 章节重点回顾-第一章-认证技术
- 章节重点回顾-第一章-数字签名
- 章节重点回顾-第一章-数字证书
- 章节重点回顾-第一章-PKI公钥基础设施
- 练习题
- 章节重点回顾-第一章-可靠性
- 练习题
- 章节重点回顾-第二章-函数
- 练习题
- 章节重点回顾-第三章-线性结构
- 章节重点回顾-第三章-栈和队列
- 练习题
- 章节重点回顾-第三章-矩阵结构
- 章节重点回顾-第三章-树
- 章节重点回顾-第三章-二叉树
- 章节重点回顾-第三章-二叉树的遍历
- 章节重点回顾-第三章-线索二叉树
- 章节重点回顾-第三章-最优二叉树
- 章节重点回顾-第三章-查找二叉树
- 章节重点回顾-第三章-平衡二叉树
- 练习题
- 章节重点回顾-第三章-图的存储
- 章节重点回顾-第三章-图的最小生成树
- 练习题
- 章节重点回顾-第三章-查找和排序-算法基础
- 章节重点回顾-第三章-查找和排序-二分查找
- 章节重点回顾-第三章-查找和排序-排序总结
- 练习题
- 章节重点回顾-第四章-进程管理-进程资源图
- 章节重点回顾-第四章-进程管理-信号量
- 章节重点回顾-第四章-进程管理-生产者和消费者
- 练习题
- 章节重点回顾-第四章-页式存储
- 章节重点回顾-第四章-段式存储
- 章节重点回顾-第四章-段页式存储
- 练习题
- 章节重点回顾-第四章-文件管理-索引文件
- 章节重点回顾-第四章-文件管理-文件路径
- 章节重点回顾-第四章-文件管理-位示图法
- 练习题
大概会考24-28分左右
章节重点回顾-第一章-中央处理单元
中央处理单元的作用:实现程序控制、操作控制、时间控制、数据处理功能。
中央处理单元组成:由运算器、控制器、寄存器组和内部总线组成。
运算器组成:
- 算术逻辑单元ALU(实现对数据的算术和逻辑运算)
- 累加寄存器AC(运算结果或源操作数的存放区)
- 数据缓冲寄存器DR(暂时存放内存的指令或数据)
- 状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)
运算器功能:执行所有的算术运算,如加减乘除等,执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
控制器组成
- 指令寄存器IR(暂存CPU正在执行的指令)
- 程序计数器PC(存放即将执行的指令执行地址)
- 地址寄存器AR(保存当前CPU所访问的内存地址)
- 指令译码器ID(分析指令操作码)
控制器功能:控制整个CPU的工作,最为重要,包括程序控制、时序控制等
练习题
【2022年上】3.为了实现多级中断,保存程序现场信息最有效的方法是使用()
A.通用寄存器
B.累加器
C.堆栈
D.程序计数器
答案C
【2022年下】CPU(中央处理单元)的基本组成部件不包括(2)。
A.逻辑运算单元
B.系统总线
C.控制单元
D.寄存器组
答案B
内部总线才是的
章节重点回顾-第一章-进制
进制的表示:二进制、八进制、十进制和十六进制,一般在题目中会给出中文说明,如果没给出,他们的表示分别为:
- 二进制符号为0B开头,一般表示为0B0011
- 八进制符号位0开头,一般表示为0235
- 十六进制符号为0x开头或者H结尾,一般表示为0x18F或18FH。
不会出题,但是要知道0B0011是二进制,18FH是十六进制
章节重点回顾-第一章-校验码
校验码概念:校验码主要是为了解决计算机各部件进行数据传输和交换,确保传送过程的正确无误,一是为了提高硬件电路的可靠性,二是提高代码的校验能力。通常会用校验码来检查传送的数据是否正确。
常用的几种校验码:奇偶校验码、循环冗余校验码(CRC)和海明码
奇偶校验几乎没有考过
奇偶校验码
奇偶校验码是在有效信息位加上一位校验位,可以检测错误,不能确定出错的位置。收发端约定采用的是奇校验还是偶校验,然后接收端对接收的数据进行校验。
- 奇校验:保证这段数据有奇数个1,比如:0101一一>后头添加一个1一一>01011
- 偶校验:保证这段数据有偶数个1,比如:0101一一>后头添加一个0一一>01010
例:设原编码为0000,传输的过程中变成了1001。如果使用奇校验,原编码是00001,传输过后会变成10011,1仍然是奇数个,无法校验;如果使用偶校验,原编码是00000,传输过后会变成10010,1仍然是偶数个,同样无法校验。
CRC循环冗余校验码
CRC循环冗余校验码,只能检错,不能纠错,首先要将原始报文除以多项式,将所得的余数作为校验位并加在原始报文之后,然后发送数据发给接收方,接收方拿到数据之后,用来数据来除以多项式,看是否能整除,能整除就代表数据正确。
生成多项式:G(X)=X4+X3+1,要求出二进制序列10110011的CRC校验码
解题思路:
1.G(X)=X4+X3+1,二进制比特串为11001;
2.因为校验码4位(多项式长度减1),所以10110011后面再加4个0,得到101100110000,用“模2除法”(其实就是异或)即可得出结果
3.CRC^101100110000得到101100110100。发送到接收端;
4.接收端收到101100110100后除以11001(以"“模2除法"方式去除),余数为0则无差错
海明码
海明码是一种多重(复式)奇偶检错系统,用于检错和纠错海明校验码长度的判断方式:设数据位是位,校验位是k位则n和k必须满足以下关系:2k-1>=n+k。
练习题
【2023年上】3、设信息位是8位,用海明码来发现并纠正1位出错的情况,则校验位的位数至少为()。
A.1
B.2
C.4
D.8
答案C
2k-1>=n+k
多草节重点回顾-第一草-计算机体系结构分类
从宏观上来分类(了解即可)
- 单处理系统:利用一个处理单元与其他外部设备结合起来,实现存储、计算、通信、输入与输出等功能的系统。
- 并行处理和多处理系统:为了充分发挥问题求解过程中处理的并行性,将两个以上的处理机互连起来彼此进行通信协调,以便共同求解一个大问题的计算机系统。
- 分布式处理系统:指物理上远距离而松耦合的多计算机系统。其中,物理上的远距离意味着通信时间与处理时间相比已不可忽略,在通信线路上的数据传输速率要比在处理机内部总线上传输慢得多,这也正是松耦合的含义。
从微观上来分类
有Fynn分类法、冯泽云分类法、Handler分类法和Kuck分类法:
章节重点回顾-第一章-计算机指令
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程;控制器靠指令指挥机器工作,人们用指令表达自己的意图,并交给控制器执行。
计算机指令的组成:一条指令由操作码和操作数两部分组成
- 操作码决定要完成的操作
- 操作数指参加运算的数据及其所在的单元地址。
计算机指令执行过程(取指令,分析指令,执行指令三个步骤)
- 首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器R;
- 而后由指令译码器进行分析,分析指令操作码;
- 最后执行指令,取出指令执行所需的源操作数。
常见的两种指令:
- CISC是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现
- RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)
练习题
【2022年上】4.以下关于RISC和CISC的叙述中,不正确的是()
A.RISC的大多指令在一个时钟周期内完成
B.RISC普遍采用微程序控制器,CISC则普遍采用硬布线控制器
C.RISC的指令种类和寻址方式相对于CISC更少
D.RISC和CISC都采用流水线技术
答案B
【2022年下】以下关于RISC(精简指令集计算机)特点的叙述中,错误的是
(1)。
A.对存储器操作进行限制,使控制简单化
B.指令种类多,指令功能强
C.设置大量通用寄存器
D.选取使用频率较高的一些指令,提高执行速度
答案B
章节重点回顾-第一章-指令流水线
指令流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段,如下图所示:
指令流水线相关概念
- 流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
- 流水线执行时间:1条指令总执行时间+(总指令条数)*流水线周期。
考的最高 - 流水线吞吐率:总指令条数/流水线执行时间
- 流水线加速比:不使用流水线总执行时间使用流水线总执行时间
- 超标量流水线技术:常规流水线是度为1的,即每个流水线阶段只执行一个部分,当度大于1时,就是超标量技术,当度为3时,相当于3条流水线并行执行,即取指、分析、执行每个阶段都同时处理3条指令,因此,当题目提到度的概念时,计算时需要将指令条数=指令条数/度。然后再套流水线执行时间的公式。
练习题
【2023年上】6.设指令流水线将一指令的执行分为取指、分析、执行三段,已知取指时间是2s,分析时间需2ns,执行时间为1ns,则执行完1000条指令所需时间为()。
A.1004ns
B.1998ns
C.2003ns
D.2008ns
答案C
(2+2+1)+(1000-1)*2
章节重点回顾-第一章-总线
所谓总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。
从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
- 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
- 系统总线:是板级总线,用于计算机内各部分之间的连接,代表的有ISA总线、EISA总线、PC总线。
- 外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。
练习题
【2022年下】1、计算机中,系统总线用于()连接
A.接口和的外设
B.运算器、控制器和寄存器
C.主存和外设部件
D.DMA控制器和中断控制器
答案C
章节重点回顾-第一章-安全威胁
所谓安全威胁,是指某个人、物、事件对某一资源的机密性、完整性、可用性或合法性所造成的危害。某种攻击就是威胁的具体实现。安全威胁分为两类:故意(如黑客渗透)和偶然(如信息发往错误的地址)
典型的安全威胁如下:
章节重点回顾-第一章-加密技术
加密技术是最常用的安全保密手段,数据加密技术的关键在于加密解密算法和密钥管理。数据加密和数据解密是一对逆过程。加密技术主要分为对称加密技术和非对称加密技术两种
- 对称加密技术:对数据的加密和解密的密钥(密码)是相同的,也称为共享密钥加密技术,属于不公开密钥加密算法。其缺点是加密安全性不高(因为只有一个密钥),且密钥分发困难(因为密钥还需要传输给接收方,也要考虑保密性等问题)。但是其加密速度快,非常适合于大数据的加密。
- 非对称加密技术:又称为公开密钥加密技术,各个用户分别有一对密钥,称为公钥和私钥,其中公钥是公开的,所有用户都知道私钥是保密的,只有自己知道,使用公钥加密,只能对应的私钥能解密,使用私钥加密,同样也只有对应的公钥能解密;非对称加密就是运用了公钥和私钥的原理,其对数据的加密和解密的密钥是不同的,是公开密钥加密算法。缺点是加密速度慢(密钥多,计算量大,不适合加密大数据)
对称加密
非对称加密
章节重点回顾-第一章-认证技术
认证技术主要解决网络通信过程中通信双方的身份认可。认证方一般有账户名口令认证、使用摘要算法认证和基于PK的认证。
信息摘要
- 信息摘要的理解:就是一段数据的特征信息,当数据发生了改变,信息摘要也会发生改变,发送方会将数据和信息摘要一起传给接收方,接收方会根据接收到的数据重新生成一个信息摘要,若此摘要和接收到的摘要相同,则说明数据正确。信息摘要是由哈希函数生成的
- 信息摘要的特点:不算数据多长,都会产生固定长度的信息摘要;任何不同的输入数据,都会产生不同的信息摘要;单向性,即只能由数据生成信息摘要,不能由信息摘要还原数据
- 信息摘要算法:MD5(产生128位的输出)、SHA(安全散列算法,产生160位的输出,安全性更高)
- 信息摘要所存在的问题:信息摘要可以保证传输数据的完整性,只需要双方比对生成的信息摘要是否相同即可判断数据有没有被篡改,但是这样会出现一个问题,就是当发送方发送的数据和信息摘要都被篡改了,那么接收方拿到错误的数据生成的信息摘要也和篡改的信息摘要相同,接受方就无能为力了,这个问题,可以通过数字签名技术来解决。
章节重点回顾-第一章-数字签名
数字签名属于非对称加密方式
- 主要功能有:不可否认(不可抵赖性)、无法算改和伪造(报文鉴别)、报文的完整性。
- 原理:若发送方需要发送数据,应该使用发送方的私钥进行数字签名,而其公钥是共享的,任何接收方都可以拿来解密,因此,接收方使用了发送方的公钥解密,就必然知道此数据是由发送方的私钥加密的,而发送的私钥只属于发送方,唯一标识了数据是由谁发送的,这就是数字签名的过程原理。
章节重点回顾-第一章-数字证书
数字证书又称为数字标识,由用户申请,证书签证机关C对其核实签发的,对用户的公钥的认证。现在的数字证书版本大多为x.509。
- 数字证书的原理:每一个发送方都要先向CA申请数字证书,数字证书是经过CA数字签名了的,也即CA使用私钥加密,当发送方要发送数据时,接收方首先下载CA的公钥,去验证数字证书的真伪,如果是真的,就能保证发送方是真的,因为CA是官方权威的机构,其合法性毋庸置疑。
- 数字证书的格式:序列号、版本号、签名算法、发行者D、发行者、主体ID、有效期、公钥。
- 最安全的过程要验证两步
1、在网银系统中,使用网银时,要先下载该银行的数字证书,之后,本地客户机会用CA的公钥对数字证书进行解密,解密成功说明是CA颁发的,是该银行系统而非黑客冒充。
2、确认了通信对方无误后,就可以采用上述的一系列加密和认证技术来对
通信数据进行加密,确保数据不会在发送过程中被截获篡改。
章节重点回顾-第一章-PKI公钥基础设施
PK1公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PK框架管理密钥和证书可以建立一个安全的网络环境。
PKI主要包括四个部分:X.509格式的证书;CA操作协议;CA管理协议;CA政策制定。
PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等。
一个PK应用系统至少应具有以下部分:
- 公钥密码证书管理。
- 黑名单的发布和管理。
- 密钥的备份和恢复。
- 自动更新密钥。
- 自动管理历史密钥。
- 支持交叉认证。
练习题
【2023年上】8-9、PKI体系中,由SSL/TSL实现HTTPS应用。浏览器和服务器之间用于加密HTTP消息的方式是(8)。如果服务器证书被撤销,那么所产生的后果是(9)。
A.对方公钥+公钥加密
B.本方公钥+公钥加密
C.会话密钥+公钥加密
D.会话密钥+对称加密
A.服务器不能执行加解密
B.服务器不能执行签名
C.客户端无法再信任服务器
D.客户端无法发送加密信息给服务器
答案C C
【2023年下】12、下列算法中,不属于公开密钥加密算法的是()。
A.DSA
B.ECC
C.DES
D.RSA
答案C
非对称加密
章节重点回顾-第一章-可靠性
计算机系统的硬件的可靠性指的是硬件正常运行不发生问题的概率
可靠性的相关概念
- 平均无故障时间MTTF=1/失效率
- 平均故障修复时间MTTR=1/修复率
- 平均故障间隔时间MTBF=MTTF+MTTR
- 系统可用性=MTTF/(MTTF+MTTR) * 100%
无论什么系统,都是由多个设备组成的协同工作,而这多个设备的组合方式可以是串联、并联,也可以是混合模式以及N模冗余,假设每个设备的可靠性为R1,R2…R,则不同的系统的可靠性R的计算公式如下:
- 串行系统可靠性计算公式:R1 * R2 * R3 * … * Rn,注意:串联系统,一个设备不可靠,整个系统崩溃
- 并行系统可靠性计算公式:1-(1-R1) * ((1-R2) * (1-R3) * … * (1-Rn),注意:所有设备都不可靠盖整个系统才崩溃
- 混合系统:串联和并联都存在
练习题
【2022年上】5.某计算机系统构成如下图所示,假设每个软件的千小时可靠度R为0.95,则该系统的干小时可靠度约为()
A.0.95×(1-(1-0.95)^2)×0.95
B.0.95×(1-0.95)^2×0.95
C.0.95×2×(1-0.95)×0.95
D.0.95^4×(1-0.95)
答案A
【2022年下】某种部件用在2000台计算机系统中,运行工作1000小时后,其中有4台计算机的这种部件失效,则该部件的千小时可靠度R为(3)
A.0.990
B.0.992
C.0.996
D.0.998
答案D
1-4/2000
章节重点回顾-第二章-函数
Python考的最多,3-4分左右,不用学很深,学基本语法即可
函数:C程序由一个或多个函数组成,每个函数都一个名字,其中有且仅有一个名字为main的函数作为程序运行时的起点。函数是程序模块的主要成分,是一段具有独立功能的程序。
函数使用涉及三个概念:函数定义、函数声明(先声明后使用)、函数调用。
返回值类型函数名(参数类型表);
函数名(实参表);
练习题
【2022年上】48、程序运行过程中常使用参数在函数(过程)间传递消息,
引用调用传递的是实参的()。
A.地址
B.类型
C.名称
D.值
答案A
【2022年下】当函数调用行时,在栈顶创建且用来支持被调用函数执行的一段存储空间称为活动记录或者栈帧,栈帧中不包括(20)
A.形参变量
B.全局变量
C.返回地址
D.局部变量
答案B
全局变量存放在程序的静态存储区,位置是相对固定的、独立的
【2023年上】22、设函数foo和hoo的定义如下图所示,在函数foo中调用函数ho0,hoo的第一个参数采用传用方式(callby reference),第二个参数采用传值方式(call by value),那么函数foo中的Print(a,b)将输出()。
A.8,5
B.39,5
C.8,40
D.39,40
答案B
&是取地址,所以a的值是会变的,b是传值不会变
章节重点回顾-第三章-线性结构
线性结构:每个元素最多只有一个出度和一个入度,表现为一条线状。线性表按存储方式分为顺序表和链表。
存储结构:
- 顺序存储:用一组地址连续的存储单元依次存储线性表中的数据元素,使
得逻辑上相邻的元素物理上也相邻。 - 链式存储:存储各数据元素的结点的地址并不要求是连续的,数据元素逻
辑上相邻,物理上分开。
章节重点回顾-第三章-栈和队列
队列、栈也是线性结构,结构如下图,队列是先进先出,分队头和队尾;栈是先进后出,只有栈顶能进出。
循环队列中,头指针指向第一个元素,尾指针指向最后一个元素的下一个位置,因此,当队列空时,head=tail,当队列满时,head=tail,这样就无法区分了,因此,一般将队列少存一个元素,这样队列满时的条件就变为tai+1=head,而考虑是循环队列,必须要除以最大元素数来取余数,即(tail+1)%size=head,如上图右边所示两个公式。循环队列的长度公式为(Q.tail-Q.head)%size。优先队列;元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删别除。使用堆来存储因为其不是按照元素讲队列的顺序来决定的。
练习题
【2022年下】设栈初始时为空,对于入栈序列1,2,3,…,n,这些元素经过栈之后得到出栈序列P1,P2,P3,.,Pn,若P3=4,则P1,P2不可能的取值为(57)。
A.6,5
B.2,3
C.3,1
D.3,5
答案C
【2023年上】57、利用栈对算术表达式10*(40-30/5)+20求值时,存放操作数的栈(初始为空)的容量至少为(),才能满足暂存该表达式中的运算数或运算结果的要求。
A.2
B.3
C.4
D.5
答案
转为后缀表达式10 40 30 5 / - * 20 +,这样能知道至少可以存放多少数字
根据后上面求得的缀表达式得知操作数入栈顺序为:[10,40,30,5]遇到运算符“/” 则将栈顶元素“5”出栈、“30”出栈执行除法,所得结果“6”压入栈中,此时操作数栈中的元素为[10,40,6]。继续扫描遇到运算符“-”,将操作数栈中的“40”和“6” 出栈,执行减法,所得结果“34”入栈。此时操作数栈中元素是[10,34]。继续扫描,遇到运算符“*” ,将“34”和“10”出栈,执行乘法,所得结果“340”压入操作数栈。此时操作数栈中元素[340]。继续扫描,遇到“20”进行入栈,此时操作数栈中元素是[340,20]。继续扫描,遇到运算符“+”,将“20”与“340”出栈,执行加法,所得结果360入栈。最终操作数栈中的元素是[360]。至此后缀表达式全部处理完毕。由此可知,所需操作数栈的大小至少为4,即能存放“10,40,30,5”这几个操作数才能满足计算要求。
章节重点回顾-第三章-矩阵结构
几乎没有考过,了解
特殊矩阵:矩阵中的元素(或非0元素)的分布有一定的规律。
常见的特殊矩阵有对称矩阵、三角矩阵和对角矩
阵。
稀疏矩阵:在一个矩阵中,若非零元素的个数远远少于零元素个数,且非
零元素的分布没有规律。
存储方式为三元组结构,即存储每个非零元素的(行,列,值)
章节重点回顾-第三章-树
历年考的最多的知识点,至少2分
树的基本概念如下:
(1)双亲、孩子和兄弟:结点的子树的根称为该结点的孩子;相应地,该结点称为其子结点的双亲。具有相同双亲的结点互为兄弟。
(2)结点的度:一个阶段的子树的个数记为该结点的度。
(3)叶子结点:叶子结点也称为终端结点。指度为0的结点。
(4)内部结点:度不为0的结点,也称为分支结点或非终端结点。除根结点以外,分支结点也称为内部结点。
(5)结点的层次:根为第一层,根的孩子为第二层,以此类推,若某结点在底层,则其孩子结点在第+1层。
(6)树有高度:一棵树的最大层数记为树的高度(或深度)。
(7)有序(无序)树:若将树中结点的各子树看成是从左到右具有次序的,即不能交换,则称该树为有序树,否则称为无序树。
章节重点回顾-第三章-二叉树
满二叉树:每层都是满结点的
完全二叉树:k-1层是满结点的,第k层结点从左到右是满的
二叉树的一些特性:
- 性质1:在二叉树的第层最多有2^(i-1)个结点(>=1)。
- 性质2:深度为k的二叉树最多有2^k-1个结点(k>=1)。
- 性质3:对任意一颗二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
- 性质4:具有n个结点的完全二叉树的深度为logn+1。
- 性质5:如果根节点标号为1,则对任意结点,它的左孩子为2i,右孩子为2i+1。
章节重点回顾-第三章-二叉树的遍历
一颗非空的二叉树由根节点、左子树、右子树三部分组成,遍历这三部分,也就遍历了整颗二叉树。
这三部分遍历的基本页序是先左子树后右子树,但根节点顺序可变,以根节点访问的顺序为准有
下列三种遍历方式:
- 先序(前序)遍历:根左右。
- 中序遍历:左根右。
- 后序遍历:左右根
还有层次遍历方法:
- 从上到下
- 从左到右
示例:前序:12457836中序:42785136后序:48752631
章节重点回顾-第三章-线索二叉树
引入线索二叉树是为了保存二叉树遍历时某节点的前驱节点和后继节点的信息,二叉树的链式存储只能获取到某节点的左孩子和右孩子结点,无法获取其遍历时的前驱和后继节点,因此可以在链式存储中再增加两个指针域,使其分别指向前驱和后继节点,但这样太浪费存储空间,考虑下述实现方法:
若个节点的二叉树使用二叉链表存储,则必然有+1个空指针域,利用这些空指针域来存放节点的前驱和后继节点信息,为此,需要增加两个标志,以区分指针域存放的到底是孩子结点还是遍历节点,如下:
若二叉树的二叉链表采用上述结构,则称为线索链表,其中指向前驱、后
继节点的指针称为线索,加上线索的二叉树称为线索二叉树。
章节重点回顾-第三章-最优二叉树
最优二叉树又称为哈夫曼树,是一类带权路径长度最短的树,相关概念如下:
- 路径:树中一个结点到另一个结点之间的通路。
- 结点的路径长度:路径上的分支数目。
- 树的路径长度:根节点到达每一个叶子节点之间的路径长度之和。
- 权:节点代表的值。
- 结点的带权路径长度:该结点到根结点之间的路径长度乘以该节点的权值。
- 树的带权路径长度(树的代价):树的所有叶子节点的带权路径长度之和。
章节重点回顾-第三章-查找二叉树
查找二叉树上的每个节点都存储一个值,且每个节点的所有左孩子结点值都小于父节点值,而所有右孩子结点值都大于父节点值,是一个有规律排列的二叉树,这种数据结构可以方便查找、插入等数据操作。
二叉排序树的查找效率取决于二叉排序树的深度,对于结点个数相同的二叉排序树,平衡二叉树的深度最小而单技树的深度是最大的,故效率最差。
章节重点回顾-第三章-平衡二叉树
前面讲过查找(排序)二叉树,特点是所有左子树值小于根节点值,所有右子树值大于根节点值,而这个特点可以构造出多个不同的二叉树,并不唯一,因此提出平衡二叉树的概念,在查找二叉树特点的基础上,要求每个节点的平衡度只能为0或1或1.
节点的左右子树深度就是其左右子树各自的层数,而后将左子树深度减去右子树深度,就得到了该节点的平衡度。因此,平衡二叉树就是任意左右子树层次相差不超过1
练习题
【2022年上】27.对长度为的有序顺序进行折半查找(即二分查找)
的过程可用一棵判定树表示,该判定树的形态符合()的特点。
A.最优二叉树(即哈夫曼树)
B.平衡二叉树
C.完全二叉树
D.最小生成树
答案B
【2022年上】28.已知树T的度为4,且度为4的结点数为7个、度为3的结点数5个、度为2的结点数为8个、度为1的结点数为10个,那么T的叶子结点个数为()。
(注:树中节点个数称为结点的度,结点的度中的最大值称为树的度。)
A.30
B.35
C.40
D.49
答案
结点数=度数和+1
7+5+8+10+x=4 * 7+3 * 5+2 * 8+1 * 10+0+1
结点的度:一个阶段的子树的个数
叶子结点:终端结点,度为0的结点
【2022年上】41、一个高度为h的满二叉树的结点总数为2h-1,从根结点开始,自上而下、同层次结点从左至右,对结点按照顺序依次编号,即根结点编号为1,其左、右孩子结点编号分别为2和3,再下一层从左到右的编号为4、5、6、7,依此类推。那么,在一棵满二叉树中,对于编号为m和n的两个结点,若n=2m+1,则()。
A.m是n的左孩子
B.m是n的右孩子
C.n是m的左孩子
D.n是m的右孩子
答案D
用特殊值带入即可
【2022年下】设m和n是某二叉树上的两个结点,中序遍历时,n排在m之前的条件是(58)
A.m是n的祖先结点
B.m是n的子孙结点
C.m在n的左边
D.m在n的右边
答案D
中序遍历:左中右
章节重点回顾-第三章-图的存储
邻接矩阵:使用二维数组来表示图中节点之间的连接关系。
- 第i行和第j列的元素表示节点和节点之间是否有连接。
- 空间复杂度较高,但查找连接关系效率高。
- 当图较密集时,邻接矩阵更好
邻接链表:用到了两个数据结构,先用一个一维数组将图中所有顶点存储起来,而后,对此一维数组的每个顶点元素,使用链表挂上和其有连线关系的结点的编号和权值,示例如下图所示:
空间复杂度较低增加节点效率高,但查找连接关系效率低,当图较稀疏时,邻接链表更好
章节重点回顾-第三章-图的最小生成树
假设有n个节点,那么这个图的最小生成树有n-1条边(不会形成环路,是树非图),这n-1条边会将所有顶点都连接成一个树,并且这些边的权值之和最小,因此称为最小生成树。
-
普里姆算法(Prim):从任意顶点出发,找出与其邻接的边权值最小的,此时此边的另外一个顶点自动加入树集合中,而后再从这这个树集合的所有顶点中找出与其邻接的边权值最小的,同样此边的另外一个顶点加入树集合中,依次递归,直至图中所有顶点都加入树集合中,此时此树就是该图的最小生成树。
-
克鲁斯卡尔算法Kruscal,推荐):这个算法是从边出发的,因为本质是选取权值最小的n-1条边,因此,就将边按权值大小排序,依次选取权值最小的边,直至囊括所有节点,要注意,每次选边后要检查不能形成环路。
这两种算法都是局部最优原则,所以都是贪心法算法,并且没有谁的效率高谁的效率差,因为克鲁斯卡尔算法是数边的,所以边越多,它算起来越麻烦
练习题
【2022年上】65-66、实现Prim算法利用的算法是(65),采用Prim算法求解下图的最小生成树,该算法的设计策树的权值是(66)。
A.分治法
B.动态规划法
C,贪心算法
D递归算法
A.15
B.18
C.24
D.27
答案C A
【2022年下】采用Dijkstra算法求解下图A点到E点的最短路径,采用的算法设计策略是(64)_。该最短路径的长度是(65)。
A.分治法
B.动态规划
C贪心算法
D.回溯法
A.5
B.6
C.7
D.9
答案C A
A到E的最短
【2023年上】64-65、采用Krusk算法求解下图的最小生成树,采用的算法设计策略是(64)。该小生成树的权值是(65)
A.分治法
B.动态规划
C贪心法
D,追溯法
A.14
B.16
C.20
D.32
答案C A
章节重点回顾-第三章-查找和排序-算法基础
所谓算法就是指解题方案的准确而完整的描述,简单的说就是某个问题的解题思路
算法的复杂度:
- 时间复杂度是指程序运行从开始到结束所需要的时间。
- 空间复杂度是指对一个算法在运行过程中临时占用存储空间大小的度量。一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小
常见的对算法执行所需时间的度量:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<0(2n)<0(n!)
上述的时间复杂度,经常考到,需要注意的是,时间复杂度是一个大概的规模表示,一般以循环次数表示,O(n)说明执行时间是n的正比,另外,log对数的时间复杂度一般在查找二叉树的算法中出现。渐进符号O表示一个渐进变化程度,实际变化必须小于等于O括号内的渐进变化程度。
章节重点回顾-第三章-查找和排序-二分查找
折半(二分查找:设查找表的元素存储在一维数组[1.]中,在表中元素已经按照关键字递增方式排序的情况下,进行折半查找的方法是:
1、首先将待查元素的关键字(key)值与表r中间位置上(下标为mid)记录的关键字进行比较,若相等,则查找成功;
2、若key>r[mid.key,则说明待查记录只可能在后半个子表r[mid+1.n]中,下一步应在后半个子表中查找,
3、若key<r[mid.key,说明待查记录只可能在前半个子表rf1.mid-1]中,下一步应在r的前半个子表中查找;
4、重复上述步骤,逐步缩小范围,直到查找成功或子表为空失败时为止。
要注意两点:中间值位置求出若为小数,应该向下取整,即4.5=4,非四舍五入;中间值已经比较过不相等,在划分下一次比较区间时,无需将中间值位置再纳入下一次比较区间。当查找的数据越多时,二分查找的效率越高。
折半查找的时间复杂度为O(Iog2n)
章节重点回顾-第三章-查找和排序-排序总结
练习题
排序真题
【2022年上】29.排序算法的稳定性是指将待排序列排序后,能确保排序码中的相对位置保持不变。()是稳定的排序算法。
A.冒泡排序
B.快速排序
C堆排序
D.简单选择排序
答案A
【2022年上】42-43、对个基本有序的整数进行排序,若采用插入排序算法,则时间和空间复杂度分别为(42);若采用快速排序算法,则时间和空间复杂度分别为(43)。
A.0(n2)和O(n)
B.0(n)和0(n)
C.O(n^2)和0(1)
D.0(n)和0(1)
A.O(n2)和O(n)
B.O(nlgn)和o(n)
C.0(n2)和0(1)
D.O(nlgn)和0(1)
答案D C
【2022安下】下列排序算法中,占用辅助存储空间最多的是(61)
A归并排序
B.快速排序
C.堆排序
D.冒泡排序
答案A
【2023年上】62-63、对一组数据进行排序要求排序算法的时间复杂度为0(lg),且要求排序是稳定的,则可采用(62)算法。若要求排序算法的时间复杂度为0(nlg),且在原数据上进行,即空间复杂度为0(1),则可采用(63)算法。
A直接插入排序
B.堆排序
C.快速排序
D.归并排序
A直接插入排序
B堆排序
C.快速排序
D.归并排序
答案D B
章节重点回顾-第四章-进程管理-进程资源图
进程资源图:用来表示进程和资源之间的分配和请求关系,如下图所示:
P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。
阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,
该进程被阻塞了无法继续。如上图中P2。
非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3。当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态。
章节重点回顾-第四章-进程管理-信号量
P操作:申请资源,S=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
V操作:释放资源,S=S+1,若S>0,代表此时资源有空余,没有阻塞的进程,则该进程继续执行;若S<=0,代表此时线程在被阻塞,所以需要从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行V操作的进程继续。
章节重点回顾-第四章-进程管理-生产者和消费者
经典问题:生产者和消费者的问题
三个信号量:互斥信号量$0(仓库独立使用权),同步信号量S1(仓库空闲位置),同步信号量S2(仓库商品个数)
先P后V,PV平衡
练习题
【2022年上】58-61、进程P1、P2、P3、P4、P5和P6的前趋势图如下所示,若用PV操作控制进程P1、P2、P3、P4P5和P6并发执行的过程,则需要设置7个信号量S1、S2、S3、S4、S5、S6和S7,且信号量S1~S7的初值都等于零。P1-P6的进程执行图中,a和b处应分别填写(58);c和d处应分别填写(59);e和处应分别填写(60);g和h处应分别填写(61)
A.V(S1)和V(S2)
B.P(S1)和P(S2)
C.P(S1)和V(S2)
D.V(S1)和P(S2)
A.P(S1)P(S2)和P(S3)和P(S4)
B.V(S1)V(S2)和V(S3)和V(S4)
C.P(S1)P(S2)和V(S3)和V(S4)
D.V(S1)V(S2)和P(S3)和P(S4)
A.P(S5)P(S6)和P(S4)和P(S5)
B.V(S5)V(S6)和V(S4)和V(S5)
C.P(S5)P(S6)和V(S4)和V(S5)
D.V(S5)V(S6)和P(S4)和P(S5)
A.P(S7)和P(S6)P(S7)
B.V(S7)和P(S6)P(S7)
C.P(S7)和V(S6)V(S7)
D.V(S7)和V(S6)V(S7)
答案A C D B
4个规律:
1)先P后V
2)PV平衡
3)只有出,只有V P1和P2即a b是V操作
4)只有入,只有P P6即h使P操作
所以a b d e g是V操作,c f h是P操作
【2023年上】26-28、进程P1、P2、P3、P4、P5和P6的前趋图如下所示:
若用PV操作控制进程P1、P2、P3、P4、P5和P6并发执行的过程,需要设置8个信号量S1、S2、S3、S4、S5、S6、S7和S8,且信号量S1-S8的初值都等于零。下面P1-P6的进程执行过程中,①和②处应分别填写(26);③和④处应分别填写(27):⑤和⑥处应分别填写(28)
A.P (S1)P (S2)V (S3)V (S4)
B.P (S1)P (S2)V (S1)V (S2)
C.V (S3)V (S4)P (S1)P (S2)
D.V (S3)V(S4)P (S2)P (S3)
A.V(S5)和P(S4)P(S5)
B.V(S3)和P(S4)V(S5)
C.P(S5)和V(S4)V(S5)
D.P(S3)和P(S4)P(S5)
A.V(S6)和V(S8)
B.P(S6)和P(S7)
C.P(S6)和V(S8)
D.P(S6)和P(S8)
答案D A C
1 3 6是V操作,2 4 5是P操作
章节重点回顾-第四章-页式存储
页式存储是操作系统的一种存储管理方式。
因为我们的程序往往是远远大于内存的,所以程序在执行的时候,是不会一次性把所有内容都装入到内存中,它会把程序分为若干个页,每个页固定大小,一般是4K,然后把这些页离散存入到内存中,而内存是按块来划分的,所以就通过页表来进行映射程序中的页在内存中的块的存储;
进程程序)中的地址,我们称之为逻辑地址(虚地址),而内存中的地址我们称之为物理地址(实地址)
每个页分为页号和页内地址,页号用来和块号对应,代表存储的位置,大小可以代表页的数量,页内地址代表的是存储的数据内容,大小可以代表数据大小
章节重点回顾-第四章-段式存储
段式存储是指将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的.
地址表示:(段号,段内偏移):其中段内偏移不能超过该段号对应的段长,否则越界错误,而此地址对应的真正内存地址应该是:段号对应的基地址+段内偏移。
优点:程序逻辑完整,修改互不影响内存利用率低
缺点:内存碎片浪费大
章节重点回顾-第四章-段页式存储
对进程空间先分段,后分页,具体原理图和优缺点如下:
优点:空间浪费小、存储共享容易、能动态连接。
缺点:由于管理软件的增加,复杂性和开销也增加,执行速度下降
练习题
【2022年】假设段页式存储管理系统中的地址结构如下图所示,则系统()。
A最多可有2048个段,每个段的大小均为2048个页,页的大小为2K
B.最多可有2048个段,每个段最大允许有2048个页,页的大小为2K
C.最多可有1024个段,每个段的大小均为1024个页,页的大小为4K
D.最多可有1024个段,每个段最大允许有1024个页,页的大小为4K
答案D
212=4K
章节重点回顾-第四章-文件管理-索引文件
计算机系统中采用的索引文件结构如下图所示:
系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,共可存4KB *10=40KB数据;
10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可1024 *4KB=4098KB数据。
级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘快地址
而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为1024 *1024 *4KB数据。
章节重点回顾-第四章-文件管理-文件路径
- 相对路径:是从当前路径开始的路径。
- 绝对路径:是从根目录开始的路径。
- 全文件名:绝对路径+文件名。
注意:绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。
树形结构主要是区分相对路径和绝对路径,如下图所示:
章节重点回顾-第四章-文件管理-位示图法
位示图法:对每个物理空间用一位标识,为1则使用,为0则空闲,形成一张位示图。
练习题
【2023年】某文件管理系统采用位示图(bitmap)来记录磁盘的使用情况,若计算机系统的字长为64位,磁盘容量为512GB,物理块的大小为4MB,那么位示图的大小为()个字。
A.1024
B.2048
C.4096
D.9600
答案B
一个字长=64 * 4 = 256M
512 *1024 / 256 = 2048