- 博客(102)
- 资源 (16)
- 收藏
- 关注
原创 操作系统笔记
操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。①操作系统是系统资源的管理者②向上层提供方便易用的服务③是最接近硬件的一层软件直观的例子:打开 Windows 操作系统的“任务管理器”(快捷键:Ctrl+Alt+Del)
2024-11-24 14:32:46
977
原创 汉诺塔问题
汉诺塔是一个经典的递归问题,涉及三个柱子和n个圆盘,圆盘大小从底部开始依次往上递减,目标是从柱A移动所有的圆盘到柱C,过程中一次只能移动一个圆盘,并且任何时候都不能将大圆盘放在小圆盘之上。③当n=3时,先将上面小的圆盘从A移到C,再将中间圆盘从A移到B,再将小圆盘从C移到B,再将下面大圆盘从A移到C,再将小圆盘从B移到A,再将中间圆盘从B移到C,再将小圆盘从A移到C。②当n=2时,先将上面小的圆盘从A移到B,再将下面大圆盘移到从A移到C,再将小圆盘从B移到C。①当n=1时,直接将圆盘从A移到C。
2024-10-18 13:22:38
295
原创 C语言基础笔记(全)
printf函数可以输出各种类型的数据,包括整型、浮点型、字符型、字符串型等,实际原理是printf函数将这些类型的数据格式化为字符串后,放入标准缓冲区,然后将结果显示到屏幕上printf函数根据format给出的格式打印输出到stdout(标准输出)和其他参数中代码格式%c字符%d带符号整数%f浮点数%s一串字符%u无符号整数%x无符号十六进制数,用小写字母%X无符号十六进制数,用大写字母%p一个指针%%一个'%'符号。
2024-06-27 17:39:56
5271
3
原创 计算机组成原理(二)——数据的表示和运算
十进制计数法有0~9,共10种符号,逢十进一基数:每个数码位所用到的不同符号的个数,r进制的基数为r二进制:0,1①可使用两个稳定状态的物理器件表示②0,1正好对应逻辑值假、真。方便实现逻辑运算③可很方便地使用逻辑门电路实现算术运算真值:符合人类习惯的数字机器数:数字实际存到机器里的形式,正负号需要被“数字化”
2024-06-27 17:39:24
1237
2
原创 计算机组成原理(一)——计算机系统概述
(计算机的实体,如主机、外设等)(由具有各类特殊功能的程序组成)计算机性能的好坏取决于“软”、“硬”件功能的总和。
2024-04-29 01:30:22
1905
原创 数据结构笔记(全)
线性表:是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列,不是顺序表,因为所有的整数是无限的)其中n为表长,当n=0时线性表是一个空表。若用L表示一个线性表,则是线性表中的第i个元素,称为线性表中的位序是表头元素;是表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继2.1.2 线性表的基本操作InitList(&L):初始化表。构造一个空的线性表 L,分配内存空间。
2024-04-25 12:28:07
12091
22
原创 数据结构(八)——排序
排序(Sort),就是重新排列表中的元素,使表少的元素满足按关键字有序的过程。输入∶n个记录R1,R2...., Rn,对应的关键字为k1, k2,... , kn输出:输入序列的一个重排R1',R2'....,Rn',使得有k1'≤k2'≤...≤kn'(也可递减)算法的稳定性。若待排序表中有两个元素R,和R,其对应的关键字相同即key = keyj,且在排序前R;在R,的前面,若使用某一排序算法排序后,R仍然在R的前面,则称这个排序算法是稳定的,否则称排序算法是不稳定的。
2024-04-25 12:14:16
1515
1
原创 数据结构(七)——散列表
对于散列函数 H(key)=key%13 来说,1 和 14 是“同义词”,可以构造更适合的散列函数,让各个关键字尽可能地映射到不同的存储位置,从而减少“冲突”冲突(碰撞)︰在散列表中插入一个数据元素时,需要根据关键字的值确定其存储地址,若该地址已经存储了其他元素,则称这种情况为“冲突(碰撞)”Step 2∶若关键字不匹配,则根据“探测序列”对比下一个地址的关键字,直到“查找成功”或“查找失败”例︰长度为13的散列表状态如下图所示,散列函数H(key)=key%13,采用线性探测法解决冲突。
2024-04-19 16:31:56
5396
2
原创 数据结构(七)——B树和B+树
4)在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。5)所有的叶结点都出现在同一层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失败结点,实际上这些结点不存在,指向这些结点的指针为空)。B树,又称多路平衡查找树,B树中所被允许的孩子个数的最大值称为B树的阶,通常用m表示。3)在B+树中,叶结点包含全部关键字,非叶结点中出现过的关键字也会出现在叶结点中。
2024-04-17 20:12:31
1108
原创 数据结构(七)——树形查找
平衡二叉树AVL:插入/删除很容易破坏“平衡”特性,需要频繁调整树的形态。如:插入操作导致不平衡,则需要先计算平衡因子,找到最小不平衡子树(时间开销大),再进行LL/RR/LR/RL调整红黑树RBT:插入/删除很多时候不会破坏“红黑”特性,无需频繁调整树的形态。即便需要调整,一般都可以在常数级时间内完成平衡二叉树:适用于以查为主、很少插入/删除的场景红黑树:适用于频繁插入、删除的场景,实用性更强红黑树的定义红黑树是二叉排序树一左子树结点值≤根结点值≤右子树结点值。
2024-04-11 21:41:37
1626
原创 数据结构(七)——查找的基本概念
平均查找长度(ASL, Average Search Length)——所有查找过程中进行关键字的比较次数的平均值。关键字 —— 数据元素中唯⼀标识该元素的某个数据项的值,使⽤基于关键字的查找,查找结果应该是唯⼀的。查找表(查找结构)—— ⽤于查找的数据集合称为查找表,它由同⼀类型的数据元素(或记录)组成。查找 —— 在数据集合中寻找满⾜某种条件的数据元素的过程称为查找。查找长度——在查找运算中,需要对比关键字的次数称为查找长度。查找效率:查找成功和查找失败都是O(n)的数量级。
2024-04-08 15:07:23
810
原创 数据结构(六)——图的应用
设R为G的所有⽣成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的最小生成树(Minimum-Spanning-Tree, MST)。第5轮:循环遍历所有个结点,找 到lowCost最低的,且还没加入树的顶点。第1轮:循环遍历所有个结点,找到lowCost最低的,且还没加入树的顶点。第3轮:循环遍历所有个结点,找到lowCost最低的,且还没加入树的顶点。第4轮:循环遍历所有个结点,找到lowCost最低的,且还没加入树的顶点。第1轮:检查第1条边的两个顶点是否 连通(是否属于同⼀个集合)
2024-04-01 23:33:26
1693
原创 数据结构(六)——图的遍历
NextNeighbor(G,x,y):假设图G中顶点y是顶点x的⼀个邻接点,返回除y之外 顶点x的下⼀个邻接点的顶点号,若y是x的最后⼀个邻接点,则返回-1。查找每个顶点的邻接点都需要O(|V|)的时间,而总共有|N个顶点时间复杂度=O(|V|^2)查找各个顶点的邻接点共需要O(E)的时间,时间复杂度=O(|V|+|E|)查找每个顶点的邻接点都需要O(|V|)的时间,⽽总共有|V|个顶点。访问 |V| 个顶点需要O(|V|)的时间。访问 |V| 个顶点需要O(|V|)的时间。
2024-03-31 20:25:49
1073
原创 数据结构(六)——图的存储及基本操作
无向图的邻接矩阵是对称矩阵,可以压缩存储(只存储上三角区/下三角区)空间复杂度:O(|V|^2) ——只和顶点数相关,和实际的边数无关。邻接矩阵法求顶点的度/出度/入度的时间复杂度为O(|V|)第i个结点的度 = 第i行、第i列的非零元素个数之和。第i个结点的度 = 第i行(或第i列)的非零元素个数。第i个结点的出度 = 第i行的非零元素个数。第i个结点的入度 = 第i列的非零元素个数。注意:邻接多重表只适 用于存储无向图。空间复杂度:O(|V|+|E|)空间复杂度:O(|V|+|E|)
2024-03-30 20:52:21
1569
原创 数据结构(六)——图
图G由顶点集V和边集E组成,记为G = (V, E),其中V(G)表示图G中顶点的有限非空集;E(G) 表示图G中顶点之间的关系(边)集合。若V = {v1, v2, … , vn},则用|V|表示图G中顶点的个 数,也称图G的阶,,用|E|表示图G中边的条数。注意:线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集:若E是无向边(简称边)的有限集合时,则图G为无向图。边是顶点的无序对,记为(v, w)或(w, v),因为(v, w) = (w, v),其 中v、w是顶点。
2024-03-28 15:39:56
1306
1
原创 数据结构(五)——树森林
处理一个结点的方法是:如果当前处理的结点在树中有孩子,就把所有孩子结点 “用右指针串成糖葫芦”,并在二叉树中把第一个孩子挂在当前结点的左指针下方。处理一个结点的方法是:如果当前处理的结点在树中有孩子,就把所有孩子结点“用右 指针串成糖葫芦”,并在二叉树中把第一个孩子挂在当前结点的左指针下方。如何恢复一个结点的孩子:在二叉树中,如果当前处理的结点有左孩子,就把左孩子和“一整串右指针糖葫 芦” 拆下来,按顺序挂在当前结点的下方。②从树的根节点开始,按“树的层序”恢复每个结点的孩子。
2024-03-24 23:05:48
917
原创 数据结构(五)——二叉树的遍历和线索二叉树
普通二叉树进行遍历时,找前驱、后继很不方便,且每次都要从根结点出发,无法从一个指定的结点开始遍历。tag == 1 时,表示指针是“线索”。②若 p->rtag==0,则 next = p 的右子树中最左下结点。①若 p->rtag==1,则 next = p->rchild。①若 p->rtag==1,则 next = p->rchild。①若 p->ltag==1,则 next = p->lchild。①若 p->rtag==1,则 next = p->rchild。
2024-03-23 07:51:07
1810
1
原创 数据结构(五)——二叉树的概念
二叉树是n(n≥0)个结点的有限集合:① 或者为空二叉树,即n = 0。② 或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别是一棵二叉树。特点:①每个结点至多只有两棵子树 ②左右子树不能颠倒(二叉树是有序树)二叉树的五种状态空二叉树只有左子树(即右子树为空)只有右子树(即左子树为空)只有根节点(左右子树都为空)左右子树都有几个特殊的二叉树满二叉树。一棵高度为h,且含有2^h - 1个结点的二叉树特点:①只有最后一层有叶子结点。
2024-03-20 11:45:53
1679
原创 数据结构(四)——串的模式匹配
主串⻓度为n,模式串⻓度为 m 朴素模式匹配算法:将主串中所有⻓度为m的⼦串依次与模式串对⽐,直到找到⼀个完全匹配的⼦串, 或所有的⼦串都不匹配为⽌。接下来的字符,在不匹配的位置前划一根分界线,模式串一步一步往后退,直到分界线前的“对的上”,或模式串完全越过分界线位置,如下面为第3个字符不匹配的情况。最坏的情况,每个⼦串都要对⽐ m 个字符,共 n-m+1 个⼦串,复杂度 = O((n-m+1)m) = O(nm)任何模式串第⼀个字符不匹配时,只能匹配下⼀个⼦串,因此,next[1]都⽆脑写 0。
2024-03-18 22:38:20
1742
原创 数据结构(四)——串的定义和基本操作
例:T=‘iPhone 11 Pro Max?连续的Eg:’iPhone’,’Pro M’ 是串T 的子串Eg:T 是子串’iPhone’的主串Eg:’1’在T中的位置是8(第一次出现)Eg:’11 Pro’在 T 中的位置为8注意:串的位序是从1开始而不是从0开始串是一种特殊的线性表,数据元素之间呈线性关系串的数据对象限定为字符集(如中文字符、英文字符、数字字符、标点字符等)
2024-03-18 08:15:00
1512
原创 数据结构(三)——数组和特殊矩阵
存储,则b[i][j] 的存储地址 = LOC + ( j*M+ i ) * sizeof(ElemType)存储,则b[i][j] 的存储地址 = LOC + (i*N + j) * sizeof(ElemType)数组元素a[i] 的存放地址 = LOC + i * sizeof(ElemType) (0≤i<10)策略:只存储主对角线+下三角区 按行优先原则将各元素存入一维数组中。M行N列的二维数组 b[M][N] 中,若按。M行N列的二维数组 b[M][N] 中,若按。
2024-03-16 10:45:46
376
原创 数据结构(三)——栈和队列的应用
但对于计算机来说中缀表达式是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式, 若碰到“(” 或栈空则停止。注意:“(”不加入后缀表达式。从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算, 合体为一个操作数。③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①。③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①。
2024-03-15 15:53:12
1009
原创 数据结构(三)——队列
队列已满的条件:队尾指针的再下一个位置是队头,即(Q.rear+1)%MaxSize==Q.front。判空:(Q.rear+1)%MaxSize==Q.front //判断队尾指针的下一个位置是不是队头。如果不牺牲一个单元来区分队空和队满的话,不能使用Q.rear == Q.front作为判空的条件。QueueEmpty(Q):判队列空,若队列Q为空返回true,否则返回false。InitQueue(&Q):初始化队列,构造一个空队列Q。队空条件:Q.rear==Q.front。
2024-03-14 08:00:00
1191
原创 数据结构(二)——顺序表和链表的比较
A:顺序表和链表的逻辑结构都是线性结构,都属于线性表。但是二者的存储结构不同,顺序表采用顺序存储…(特点,带来的优点缺点);由于采用不同的存储方式实现,因此基本操作的实现效率也不同。顺序存储逻辑上相邻的元素,对应的物理存储位置也相邻,链式存储逻辑上相邻的元素物理存储位置不一定相邻,对应的逻辑关系是通过指针链接来表示的。动态分配:动态数组(malloc、free),容量可以改变,但是需要移动大量元素,时间代价高。顺序表可以顺序存取,也可以随机存取,在第i个位置上执行存取操作,顺序表仅需一次访问.
2024-03-11 09:38:12
741
原创 数据结构(二)——线性表(双链表)
双链表结点中有两个指针prior和next,分别指向其直接前驱和直接后继表头结点的prior域和尾结点的next域都是NULL。
2024-03-10 12:30:34
579
原创 数据结构(二)——线性表(单链表)
不带头结点,写代码更麻烦 对第一个数据结点和后续数据结点的 处理需要用不同的代码逻辑 对空表和非空表的处理需要用不同的 代码逻辑。ListDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。找到第i-1个结点,将其指针指向第i+1个结点,并释放第i个结点,头结点可看做“第0个”结点。一个结点存储一个数据元素,各结点间的前后关系用一个指针表示。要表示一个单链表时,只需要表明一个头指针L,指向单链表的第一个结点。删除结点p,需要修改其前驱 结点的 next 指针。
2024-03-09 10:39:22
1715
原创 PL/SQL连接数据库报Initialization error Could not load “.../oci.dll“问题处理
面板可以正常打开就是连接的时候会报错,能知道问题是配置的路径出了问题,在Tools—Preferences—Connection中配置了几次,直接改成了现有的目录还是有问题。OCI library是oci.dll文件所在的绝对路径,一定要复制根路径,我的就是少了个字母。之前都配置好了能正常使用,手欠改了下文件目录名称,导致oci.dll的目录发生变化。Oracle_Home的目录是PLSQL的安装目录,就是exe执行文件所在目录。
2024-03-08 10:45:14
2015
原创 数据结构(二)——线性表(顺序表)
顺序表:用顺序存储的方式实现线性表顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中C语言中通过sizeof(ElementType)可以知道一个数据元素的大小。
2024-03-06 16:51:33
1420
原创 时间复杂度考点总结
解答:i=1时循环1次,i=2时循环2次,i=4时循环4次,所以循环次数为1+2+4+...+2的x次方。【2022统考真题】下列程序段的时间复杂度是( )。时间复杂度主要考察的是循环,循环分为一层循环和多层循环。这个跟最上面的题的区别是内层循环的次数每次都是n。基本方法:数出指令总执行次数,再确定数量级。时间复杂度的定义:指令执行总次数的数量级。这道题容易错选为C,正确答案是B。,所以数量级为O(n)x表示外层循环次数,
2024-03-06 15:36:09
1341
原创 数据结构(一)——概述
数据:用来描述客观事物的数、计算机中是字符及所有能输入并被程序识别和处理的符号的集合。数据元素:数据的基本单位,一个数据元素可由若干数据项组成。数据结构:指相互之间存在一种或多种特定关系的数据元素的集合。数据结构的三要素:逻辑结构、存储结构、数据的运算。数据对象:具有相同性质的数据元素的集合,是数据的一个子集。逻辑结构:指数据元素之间的逻辑关系存储结构(物理结构):用计算机表示数据元素的逻辑关系(后三种统称为非顺序存储)数据的运算:运算的定义是针对逻辑结构的, 指出运算的功能;
2024-03-04 16:06:09
1433
1
原创 C语言基础—习题及代码(二)
5.使用C++的引用,注意提交时把代码选为C++;2.输入一个整型数,然后申请对应大小空间内存,然后读取一个字符串(测试用例的字符串中含有空格),字符串的输入长度小于最初输入的整型数大小,最后输出输入的字符串即可(无需考虑输入的字符串过长,超过了内存大小);4.输入一个学生的学号,姓名,性别,用结构体存储,通过scanf读取后,再通过printf打印输出。1.输入一个整型数,存入变量i,通过子函数change把主函数的变量i除2,然后打印i。例如如果输入的为10,打印出5,如果输入的为7,打印出3。
2024-03-03 21:59:35
246
原创 C语言基础(五)——结构体与C++引用
定义结构体变量时,使用 struct student 来定义,不能只有 struct 或 student,否则也会编译不通。结构体的初始化只能在一开始定义,如果 struct student s={1001,"lele",'M',20,85.4,"Shenzhen"}已经执行,即 struct student s 已经定义,就不能再执 行 s={1001,"lele",'M',20,85.4,"Shenzhen"}
2024-03-02 12:48:36
1290
原创 C语言基础(四)——函数
关于全局变量需要注意如下几点:(1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。(2)使用全局变量过多会降低程序的清晰性。在各个函数执行时都可能改变外部变量的值,程序容易出错,因此要有限制地使用全局变量(初试时尽量不用)。(3)因为函数在执行时依赖于其所在的外部变量,如果将一个函数移到另一个文件中,那么还要将有关的外部变量及其值一起移过去。然而,如果该外部变量与其他文件的变量同名,那么就会出现问题,即会降低程序的可靠性和通用性.
2024-03-02 09:00:00
1053
Java面试资料精讲分析.txt
2020-07-28
BAT攻略进入大厂腾讯阿里百度
2020-07-28
《网页设计与制作项目教程(HTML+CSS+JavaScript)》-配套源码.zip
2020-05-25
动态网页设计与制作(HTML5+CSS3+JavaScript)源代码和素材.zip
2020-05-25
CodeHelp_2.0_XiaZaiBa.zip
2019-12-13
idea打包详情
2018-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人