自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类与对象知识点梳理

1、声明定义都放在类内部,成员函数放在类内部,编译器可能将其当作内联函数处理2、声明定义分离,注意函数模板声明和定义不可分离。

2024-01-29 21:22:47 256

原创 二叉树层序遍历

如果返回结果是一个vector,这样会很简单,只需要将根节点入队列,循环取队头元素,队头元素出队,取得同时将其左右子树不为空的节点入队即可,但是这个题目的返回值时vector,这就意味着我们要考虑一个节点在树中的哪一层。首先将根节点入队,然后开始循环,访问根节点,根节点出队,同时左右孩子入队,这样此时队列中的元素全部都处于树的同一层,我们只需要记录此时队列大小,就可以访问同一层的数据,即使后续队列有进队操作,也不会对我们造成影响。

2024-01-20 03:35:29 283

原创 leetcode101-对称二叉树

因此可使用递归求解,使用两个指针pl和pr分别指向左右子树,当pl左移时,pr右移,这样pl和pr在树中始终处于镜像对称的位置,判断这两个位置的值是否相同就可以求解。将大问题(判断左右子树是否镜像对称?)拆解成了小问题(根节点相同+左子树和右子树镜像对称)判断一棵树是对称二叉树的条件:左右子树镜像对称。2、每棵树的左子树和另一棵树的右子树镜像对称。1、两个指针中,只有一个为空,返回false。那么如何判断左右子树是镜像对称呢?1、两个指针为空,返回true。1、两棵树根节点相同。

2024-01-20 02:50:09 300

原创 linux文件、目录操作(用户态)

目录存储原理:在linux中,目录是一种特别的文件,总体大小固定,数据块中把很多文件的文件名和索引节点存放在一起。发生错误,返回NULL,并设置erron,成功返回一个指向dirent(dirp的下一个)的指针,到达目录流末尾,返回NULL。打开一个和name相应的目录流,并返回指向这个目录流的一个指针,这个目录流指向这个目录的第一个项。w:只写,ptr位于文件开头,文件不存在创建文件,文件存在截断文件为0。w+:读写:ptr位于文件开头,文件存在创建文件,文件存在截断文件为0。

2024-01-20 01:52:37 420

原创 平衡二叉搜索树(二叉搜索树、AVL树、红黑树)

/左子树根//右子树根K _key;//valueBTreeNode(const K& key)//节点构造函数,_key(key){}public:bool insert(const K& key){}//插入节点void _InOrder(Node* root){}//中序遍历子函数void InOrder(){}//中序遍历bool erase(const K& key){}//删除节点private://根节点{}// 该节点的左孩子// 该节点的右孩子。

2024-01-10 15:46:00 1167

原创 三大特性--继承

2、子类和父类有同名函数时,子类会屏蔽父类的同名函数(隐藏和重定义,这里要和后面多态中的重写(覆盖)区分,并且可以通过类名::的方式访问父类的同名成员)。3、基类中其他成员的在派生类中的访问方式是继承方式和在基类中的访问方式的最小值,这里public > protected > private。1、构造函数:子类的构造函数必须先调用父类的构造函数,对父类部分进行初始化,如果子类没有默认构造函数,必须在子类构造函数的初始化列表显式调用。, 体现了由简单到复杂的认知过程。,增加功能,这样产生新的类,称派生类。

2024-01-02 23:56:03 1538

原创 STL-string简单实现

字符串扩容函数(当我们使用pushback或者append时,有时会出现空间不足的问题,如果强行访问就会出现指针越界的情况,因此这时要对字符串进行扩容)今天复习了string类,做笔记方便日后复习。看完这个类的大体结构,我们开始对其实现。水平有限,希望大家结合图示理解。重载赋值运算符(传统写法)重载赋值运算符(现代写法)

2023-12-27 17:22:53 343 1

原创 快速排序(优化)

我们既然知道了快速排序最优的情况,那我们就尽量要让key值取这数组中的中位数,但我们在大多情况下不知道计算机处理的数组中的中位数是什么,因此我们可以取数组中的三个数(这里我们取数组第一个、最后一个和中间三个数进行比大小),让key等于三个数中的中位数,从而保证不会有最坏的情况发生,这样就对快速排序进行了优化。之前讲的快速排序时间复杂度大多数时候可以看作O(n * log(n)),但如果我们选取的key恰好是这组数里面最大的或者最小的时,这时候快速排序的效率会非常低,这是为什么呢?

2023-12-21 21:40:14 401

原创 快速排序(未优化)

选择一个数组中的一个值作为key,然后使用left标记数组最左侧,right标记数组最右侧,left找比key大的数right找比key小的数,当left和right相遇时,将key插入相遇处,这时key左边都是比key小的,key右边都是比key大的,从而做到相对有序,key也就到了排序后应该到的位置,然后以key为中点将数组拆分,递归上面的过程就可以将数组排为有序。这就是没有优化的快速排序,下一篇文章会更新优化后的快速排序,如果对您有帮助,希望可以一键三连给小编一些鼓励球球了。

2023-12-20 13:34:39 569

原创 原码、补码、反码的应用

随着i的变化,-i的二进制成以下规律,因此我们可以得知最近的计算机存储的值中后8位是00000001的值是,-255,因此当i为255是a[i]存储的值是'\0',因此字符串的长度就是255。因为a[i]的类型是char,因此赋值时要发生截断,因此我们只要看(-1) + (-i) 这个值的后8位就行,strlen是求取字符串长度的函数,字符串以'\0'结尾,因此我们要看什么时候a[i]存取的值是'\0'。11111111只要再加上一个00000001就是00000000,也就是'\0'的ascii值.

2023-12-01 18:18:08 394 1

原创 探寻C语言const不同位置的含义

因此看一个被const修饰的指针是指针变量无法改变还是指针所指的值无法改变的关键是看*(这里我理解为一种类型,*是一级指针,**是二级指针)和const的相对位置,const右边是什么,什么就不能改变。编译会发生报错,原因是const位于*左边,const修饰的是*pa,因此*pa无法更改。const右边是**ppa,因此**ppa无法改变。2、const位于*右边,如下图。

2023-11-30 19:15:58 427

空空如也

空空如也

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

TA关注的人

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