- 博客(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
873
原创 STL:优先级队列的实现
STL中优先级队列本质上就是堆。在上一篇博客中讲到过:堆是一种完全二叉树,逻辑结构上看起来像树,但在物理结构中是存储在线性表中。与普通线性表不同的是,堆中数据大小是规律排列的:小堆中每个节点都大于它的父节点,大堆中每个节点都小于它的父节点。此时就造成小堆中的根节点一定是所有数据中最小的,而大堆中的根节点一定是所有数据中最大的。
2024-02-17 19:13:07
244
1
原创 C++继承与多态
继承是C++三大特性之一。C++有类型的复用:类型模板,函数的复用:函数重载。而继承其本质是一种类的复用,使得程序员可以在原有类特性之上进行扩展来产生新的类,原有的类称为父类或基类,扩展出现的类称为子类或派生类。继承后子类所有成员与成员函数都会成为子类的一部分。定义父类,然后选择继承方式定义子类进行继承。所谓继承方式就是程序员想要子类以何种权限看待父类中的成员,共存在三种继承方式:public,private,protected。
2024-02-01 04:58:09
677
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
516
原创 数据结构:堆与堆排序
堆是一种完全二叉树,完全二叉树定义如下:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。堆分为两类:小堆和大堆。小堆是指堆中任意一个节点都值小于它的孩子节点值。同理,大推指任意一个节点的值都大于它孩子节点的值。堆的结构:事实上,堆在逻辑结构上可以看作是一种完全二叉树,但在内存中是以数组的方式存储的。左孩子节点的下标 = 父节点的下标*2+1。
2024-01-22 21:25:35
550
原创 操作系统进程定义和PCB详解
PCB:事实上由于在内存中同时运行的进程很多,操作系统需要对所有的进程进行一个统一的管理调度,就例如大学校园里学校将每个学生的学号,姓名,年龄通过excel管理在一张表上,操作系统在内部定义了一个PCB(Process Control Block)进程控制块。当一个进程进入到内存时,操作系统就对应的创建一个进程控制块PCB对该进程进行管理,每个PCB都有一个唯一的PID。每当新进程加载进入内存时,操作系统都会在/proc目录下创建一个目录名为进程PID的文件夹,同理,退出进程会将其对应的目录删除。
2024-01-15 21:42:02
1763
原创 《C++详解》(三)用const和inline代替宏函数,关键字auto,范围for循环和指针空值nullptr
用const和inline代替宏函数,关键字auto,范围for循环和指针空值nullptr
2022-10-22 21:29:47
819
9
原创 《数据结构与算法的C语言实现》数据结构篇(一)顺序表
数据结构和算法是计算机的基础,他们的互相联系和作用就形成了程序。可以说,程序=算法+数据结构。因此我创建了《数据结构与算法的C语言实现》这一专栏,不仅为了之后自己的复习同时将自己的知识分享给大家。本专栏将着重于基础的数据结构的同时,拓展一些典型的基础算法,例如排序,枚举,双指针等。希望与大家多多交流。本文主要介绍线性表中的顺序表与链表。
2022-10-12 18:42:55
802
12
原创 初入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
1065
36
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人