- 博客(35)
- 收藏
- 关注
原创 多态(c++)
3.1 概念在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。class Carpublic:public:cout << "Benz-舒适" << endl;public:cout << "BMW-操控" << endl;
2023-05-31 09:56:26
119
原创 AVL二叉树的四种旋转
即可降低树的高度,从而减少平均搜索长度。本质:二叉搜索树一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:当插入方式为:新节点插入较高左子树的左侧。我们进行右单旋。
2023-05-13 23:00:00
240
原创 继承(c++)
下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类.1. 基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。2. 基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。
2023-04-16 22:55:21
128
原创 C++内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;
2023-03-04 23:34:17
121
原创 类和对象(中)
如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。
2023-02-28 22:12:44
80
原创 权限和工具(linux)
1.权限2.常用工具1.权限:Linux是一个多用户操作系统:可以同时多个用户登录上来,各操作各的,互不影响。因为用户多了,就不可避免出现一些意外情况:谁把我的代码删了,谁改了我的代码等,因此系统进行了权限的控制。1.1系统操作权限主要是将用户分为两类用户:管理员-root用户;其他用户都是普通用户。普通用户在系统上的操作都是受限的:比如安装或者卸载软件,修改系统时间······涉及的指令:su 切换用户;useradd 添加用户;userdel 删除用户;
2023-01-31 00:56:15
124
原创 vim的几种基本模式使用(linux)
vim是一种多模式的编辑器,今天就来介绍我们常用的几种模式。注意: 1.如果你不知道在那种模式下,无脑Esc就可以回退到命令模式。2.退出的时候一般都是先保存在退出。3.在vim操作中尽量不要用鼠标。
2023-01-07 10:42:41
314
原创 排序二(数据结构)
1. 冒泡排序是一种非常容易理解的排序2. 时间复杂度:O(N^2)3. 空间复杂度:O(1)4. 稳定性:稳定1. 快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序2. 时间复杂度:O(N*logN)3. 空间复杂度:O(logN)4. 稳定性:不稳定1. 归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。2. 时间复杂度:O(N*logN)3. 空间复杂度:O(N)4. 稳定性:稳定。
2022-12-22 11:39:21
74
原创 排序(数据结构)
1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:O(N^2)3. 空间复杂度:O(1),它是一种稳定的排序算法4. 稳定性:稳定1. 希尔排序是对直接插入排序的优化。2. 当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的。
2022-12-20 16:19:36
93
原创 堆(数据结构)
如果有一个关键码的集合K = { , , ,…, },把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足: = ) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。上图是大小堆结构,那么问题来了,什么是大堆呢?什么是小堆?给出一个数组,逻辑上看做一颗完全二叉树。
2022-11-26 20:51:46
179
原创 队列(数据结构)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头这里我们使用链表来实现队列,主要是由于如果用数组实现的时候,出队列在数组头上出数据,需要遍历,效率很低。用单链表就可以解决我们的这个问题。
2022-11-16 22:44:57
322
原创 栈(数据结构)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。
2022-11-15 23:06:43
153
原创 双向带头循环链表
带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。今天我们简单来了解一下:以图说话:大概就是这样的一种链表。
2022-11-09 10:41:15
92
原创 复杂度(数据结构)
算法的复杂度:算法编写成可执行程序的时候,运行肯定要耗费时间和空间(内存)资源的,所以衡量算法的好坏可以从时间和空间来看。即时间复杂度和空间复杂度。
2022-10-23 18:10:30
559
4
原创 模拟实现strcpy
strcpy的方式就是将想要复制的数值,覆盖待复制 数组上面,判断结束的标志是‘上面的图片是库函数中的strcpy的使用。主函数我就简单举个例子。
2022-10-08 22:19:38
80
原创 (C语言)数组初始化;数组逆序;数组交换。
1)通过c语言实现init()函数初始化数组全为0;实现print()打印数组每个元素;实现reverse()函数完成数组逆置;这个只是方法,结果并没有打印出来,用for循环即可。
2022-08-13 18:56:34
407
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人