自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 AVL树简介及其四种旋转

else if(pare->bf == -1 || pare->bf == 1) //此时如果新插入节点的父节点的平衡因子不为0,那么就代表插入节点前父节点为0,其子树是平衡的,插入后树的高度发生了变化。if(pare->bf == 0)//此时插入节点的父节点平衡因子为0,代表插入前父节点的左子树高度比右子树大1,或者右子树高度比左子树大1,插入后填补了高度差,但对于整个树来说,其高度没有改变,因此可以断定整个树的高度没有改变,直接退出循环。右子树高度加1,平衡因子加1。//到此为止是二叉树的插入。

2024-02-27 05:57:34 817

原创 二叉搜索树

【代码】二叉搜索树。

2024-02-27 02:59:13 129

原创 STL:优先级队列的实现

STL中优先级队列本质上就是堆。在上一篇博客中讲到过:堆是一种完全二叉树,逻辑结构上看起来像树,但在物理结构中是存储在线性表中。与普通线性表不同的是,堆中数据大小是规律排列的:小堆中每个节点都大于它的父节点,大堆中每个节点都小于它的父节点。此时就造成小堆中的根节点一定是所有数据中最小的,而大堆中的根节点一定是所有数据中最大的。

2024-02-17 19:13:07 211 1

原创 C++继承与多态

继承是C++三大特性之一。C++有类型的复用:类型模板,函数的复用:函数重载。而继承其本质是一种类的复用,使得程序员可以在原有类特性之上进行扩展来产生新的类,原有的类称为父类或基类,扩展出现的类称为子类或派生类。继承后子类所有成员与成员函数都会成为子类的一部分。定义父类,然后选择继承方式定义子类进行继承。所谓继承方式就是程序员想要子类以何种权限看待父类中的成员,共存在三种继承方式:public,private,protected。

2024-02-01 04:58:09 586 1

原创 STL:list实现

list是和vector类似的顺序型容器,也是是比vector更为复杂的容器。list是双向带头链表,初始有一个不存数据的头节点,并通过节点内指针将后续节点依次连接起来。list结构较为复杂,就list节点来说,list自己本身和list节点不是一样的结构,list包含list节点,因此需要分开设计。(1)list可以按需申请,释放不需要扩容操作,减少内存碎片。(2)任意位置插入删除的效率是O(1)。(4)cache缓存命中率低。(3)不支持下标随机访问。

2024-01-29 23:41:01 489

原创 数据结构:堆与堆排序

堆是一种完全二叉树,完全二叉树定义如下:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。堆分为两类:小堆和大堆。小堆是指堆中任意一个节点都值小于它的孩子节点值。同理,大推指任意一个节点的值都大于它孩子节点的值。堆的结构:事实上,堆在逻辑结构上可以看作是一种完全二叉树,但在内存中是以数组的方式存储的。左孩子节点的下标 = 父节点的下标*2+1。

2024-01-22 21:25:35 513

原创 操作系统进程定义和PCB详解

PCB:事实上由于在内存中同时运行的进程很多,操作系统需要对所有的进程进行一个统一的管理调度,就例如大学校园里学校将每个学生的学号,姓名,年龄通过excel管理在一张表上,操作系统在内部定义了一个PCB(Process Control Block)进程控制块。当一个进程进入到内存时,操作系统就对应的创建一个进程控制块PCB对该进程进行管理,每个PCB都有一个唯一的PID。每当新进程加载进入内存时,操作系统都会在/proc目录下创建一个目录名为进程PID的文件夹,同理,退出进程会将其对应的目录删除。

2024-01-15 21:42:02 1259

原创 Linux操作系统以及基本命令

linux基础指令以及操作系统的理解

2023-08-17 22:14:32 103 1

原创 C++ stl库中vector的简单实现

图来自《stl源码分析》

2023-05-17 16:53:49 154

原创 一文带你完全弄懂C++构造函数细节

剖析构造函数所有细节

2023-03-26 01:37:37 593

原创 《C++详解》(三)用const和inline代替宏函数,关键字auto,范围for循环和指针空值nullptr

用const和inline代替宏函数,关键字auto,范围for循环和指针空值nullptr

2022-10-22 21:29:47 771 9

原创 《C++详解》(二)初入C++最重要的知识点:引用 操作符

C++引用操作符&

2022-10-18 19:33:00 1133 8

原创 《数据结构与算法的C语言实现》数据结构篇(二)单链表

数据结构单链表

2022-10-15 19:48:23 462 9

原创 《数据结构与算法的C语言实现》数据结构篇(一)顺序表

数据结构和算法是计算机的基础,他们的互相联系和作用就形成了程序。可以说,程序=算法+数据结构。因此我创建了《数据结构与算法的C语言实现》这一专栏,不仅为了之后自己的复习同时将自己的知识分享给大家。本专栏将着重于基础的数据结构的同时,拓展一些典型的基础算法,例如排序,枚举,双指针等。希望与大家多多交流。本文主要介绍线性表中的顺序表与链表。

2022-10-12 18:42:55 762 12

原创 时间复杂度计算方法以及常见的时间复杂度

数据结构,时间复杂度

2022-10-09 23:05:28 56678 14

原创 《C++详解》(一)C++命名空间,缺省参数与函数重载

C++初级入门学习,持续更新

2022-10-06 00:43:46 334 17

原创 初入C语言:static,const关键字的初级用法

很多初学者会感受到对于const,static两个关键字用法有很多相似之处,并纠结于两者如何使用。本文将通过具体实例辨析两者用法。一、constC语言存在变量与常量两个概念。用通俗的话来讲,在我们写代码时,常量的值是固定的而变量的值可以随操作者的需求随时改变,例如: int a = 1; printf("%d\n", a); a = 2; printf("%d\n", a);数字 1,2是常量。而a是变量,当我们在第一行代码中定义了整型变量a的值为1后,我们可以修改a的值变为2

2022-04-14 00:12:35 1037 36

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除