自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux 进程信号

内核态不能直接访问用户区代码,技术上可以访问,但是os不允许这样,因为如果内核态可以直接执行用户态代码的话,就没有权限限制,用户态有恶意代码,os不知道用户态的代码的好坏,会直接被执行。这个信号捕捉的过程就是,执行代码,需要进入系统时,由用户态转为内核态,去进行信号检测,接收,存储,辨别工作后,进行处理信号,如果为自定义处理,就会由内核态跳转到用户态去执行用户区中的信号处理代码,处理完后返回到内核态,然后内核态接收到返回值,就由内核态返回到用户态最初的代码执行区,期间进行了四次身份转换。

2025-04-14 10:50:16 1314

原创 map和set

其中平衡因子作用:左边加节点,减一,右边加节点,加一。如果插完且更新完,父亲节点变成-1或1说明高度改变了,就需要往上对父节点的平衡因子进行更改。如果插入之后变为0了,说明左右平衡相等,就不需要对父节点的平衡因子更改,如果变为-2或2就需要对二叉树进行旋转重新插入。AVL树的插入1、插入一个值按照二叉搜索树的规则进行找位置插入。2、新节点插入之后就会影响平衡因子,此时需要对平衡因子进行更新,并检查是否破坏了AVL树的平衡。

2025-04-08 10:42:52 788

原创 二叉搜索树

二叉搜索树又称二叉排序树。它的性质:若它的左子树不为空,则左子树上所有节点的值小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值二叉搜索树:一棵二叉树,可以为空;如果不为空,则需要:1、非空左子树的所有键值小于其根节点的键值2、非空右子树的所有键值小于其根节点的键值3、左右子树都是二叉搜索树。

2025-03-24 12:44:59 984

原创 力扣46题全排列

这个数组中如果存放了没有被使用的数之后,然后bool类型的数组中这个位置就用true来表示已经被使用,就要进行对下一个位置的判断,这个判断还是需要从下标0来开始判断,通过这一方法进行剪枝。然后进入下一个位置choice[3],如果下一个位置超出范围就返回,回到第一层,再将一维数组的最后一个值删除,变为1,然后把这个值(2)所在位置的bool变为true表示这个数组中没有使用,然后对下一个位置choice[2]进行判断,即又进入第二轮选择13,然后对123进行判断那个值没有使用,然后进入第三层变为132。

2025-03-23 10:48:39 305

原创 多态的学习

多态是在继承关系的类对象,去调用同一函数,产生了不同的行为。比如dog,cat的声音不一样,但是都属于动物声音。隐藏(Redefinition)核心规则:派生类定义了与基类同名的函数(无论参数是否相同),导致基类同名函数被隐藏。特点:函数名相同即可触发隐藏,参数列表可以不同。基类函数在派生类作用域中不可见(除非显式调用)。

2025-03-21 16:44:29 625

原创 x的平方根

首先设定范围最低范围为0,最高为x,然后通mid=l+(h-1)/2的方式找到中间值,判断这个值的平法小于等于x,就可以将最低范围调到mid+1。如果大于的话,就将最大范围调到mid—1。不断进行循环比较,找出最佳的mid赋值给一个数,然后进行返回。判断条件则需要最低范围小于等于最高范围。一想到在一定范围内进行查找的时,我们就可以运用二分查找法来进行缩短时间复杂度。这题可以得出一个结论是在0到x中间寻找到一个数,这个数的平分且小于等于x。

2025-03-06 11:30:18 159

原创 二进制求和

因此,首先对字符串a的一个字符进行转换为数字,然后再将迭代器向前减减,得到的值再给carry,此时carry有之前的进位值已经当前位置上a的值,然后再加上当前位置上b的值。得到的就是当前位置上的和,如果对2取余,就是当前位置上的值,然后将这个值加在新创建的字符串里面。然后首先用进位制carry来接收它们相加的值,因为是逢二进一,所以需要对2取余,取到的余数就是当前位置的数字,然后用carry除以2得到的值就是进位的值。然后通过迭代器遍历的方式,对字符串的每个字符进行遍历,然后进行转换为整型相加减。

2025-03-05 12:31:31 110

原创 二叉搜索树转双向链表

我们需要将cur的left指向prev,然后prev的right指向cur,但此时prev为空则它的right不能指向cur,并且链表第一个也不能为空,然后我们就跳过将prev的右指向cur这一步,直接将cur赋给prev。其中还需要明白prev必须地址加引用,这样才能在递归中更改它的值,然后在进行往最小节点遍历时,需满足这个节点不为空,并且它的左节点不为空,当不满足时,就说明已经找到了最小节点,或者这个节点一开始就是空,没有内容。这是就可以将prev的右指向cur,cur的左指向prev。

2025-03-04 11:21:48 206

原创 二叉树的最近公共节点祖先

当把节点的左子树的节点传进来寻找n的时候,如果遍历完了还没找到就返回false,其次没遍历完时,就进行判断,首先遍历左子树的左边节点,其次遍历左子树的右边节点。所以可以先将q去这个节点的左子树进行寻找,如果左子树不存在,那么一定是在这个节点的右子树,p节点也是如此去寻找。当传递一个根节点进去的时候,我们需要去判断,q和p是在左子树,还是右子树。如果q是在这个节点的左右子树中,p则在与q相反的节点中时,说明这个节点便是最近的相交节点。1.如果遇上这个节点的左节点是p或q,右节点是q或q,就可以返回这个节点。

2025-03-03 11:22:34 172

原创 二叉树的层序遍历

然后我们要将出的数据的结果存放于新建的数组中,当循环完之后,这一层的数据都放入了数组中,并且,这一层数据的左右节点全部放入了队列中。当实现层序遍历时,可以想到创建一个存二叉树节点的queue(队列),因为它的作用是前进先出,这样就可以八叉树中从上到下一一插入然后再一一退出,用一个数组来存放每一层的节点数据,最后将所有数组放入一个数组中形成二维数组的结构。出一层循环后,将数组放入二维数组中,便得到了一层的数据,再进行下一层的每个节点的遍历,进行对数组存数据,以及对队列加入它的左右节点,删除它本身。

2025-03-02 10:59:28 226

原创 根据二叉树创建字符串

会发现需要先对左节点进行遍历,并且输出它的每一个的值,并且每个值输入后会加上一个'(' 直到从最初始的根到最后一个左子树的节点遍历完了之后,再加上’)' ,然后等所有的括号返回完之后,再从右节点进行一一递归,也需要加上括号。6.此时当最后一个父节点左边遍历后,返回之后,执行这个代码,将这个父节点的右节点的数值进行插入,这时候返回说明这一层节点插入完毕,返回它的字符串,然后再返回到上一层节点,再将属于上层节点的剩下语句内容运行,从而实现前序遍历。然后在观察题目,再根据测试用意来进行分析。

2025-03-01 13:16:12 288

原创 c++的继承

概念a.父类(基类):被继承的类b.子类(派生类):继承之后的类目的:继承机制是面向对象程序设计使代码可以进行复用的一个方式。它允许程序程序员对原有类进行扩展,增加功能,产生新的类。定义格式:class 派生类名:继承方式(public,private,protected) 基类访问限定符的权限:继承方式:22。

2025-02-22 16:45:48 539

原创 Leetcode第二题两数相加

此时如果head还是为空就说明还没有在新链表存入任何数据,需要开个新空间,tail和head都指向它,再加上c++构造函数时就可以传值,可以将他们的和的个位数传入,取它的个位数就是这个位置的值,而十位数就需要下对一个节点的进位。则需要创建一个新的链表来接收相加之后的值,并且需要存储这个链表的头节点进行返回。其次接收l1和l2的值的方式是,如果他们的节点不为空,就接收他们的值否则为0。然后需要两个整型来接收两个需要相加链表每个节点的值,以及他们相加后进位的值。接下来就需要将进位值与节点的值相加就是和。

2025-02-04 11:54:35 248

原创 Linux进程2

区域划分:运用数据结构,来划分每个需要存放指定数据的区域start,end起始地址,区域当中每一个数字都是地址区域调整:就是更改数据结构中每个区域的start,和end其中的共享区是为了调节栈和堆的缓存地带,本质就是为了区域调整。1.地址空间的基本空间大小是字节2.32位下,即为2的32次方个地址=4GB的空间范围3.每个字节都有一个唯一的地址,地址要保证唯一性。4.要表示这么大的空间,32位的数据(二进制)即可达到这种空间,且不重复。

2025-01-16 10:31:32 958

原创 Linux进程概念

1.先描述,用struct结构体2.组织起来,用链表或其他高效的数据结构。

2024-12-26 14:30:23 783

原创 Linux的基本指令2

语法:ls [选项][文件目录名字]功能:对于目录,该命令是列出该目录的子目录和文件。对于文件,将列出文件名以及其他信息。选项* -a 列出所有文件。*-r 对目录反向排序*-t以时间排序*-l列出文件的详细信息*-R列出所有子目录下的文件。*-la 可以看见隐藏文件*-Rl 先显示目录属性,再显示目录下文件的属性*ld 文件名 显示文件的属性。

2024-12-12 09:22:43 794

原创 Linux基本 工具

下载:先从远端服务器上通过互联网下载软件包,下载了软件后,安装,安装的本质是拷贝,拷贝到目录中。yum:是Linux下常用的一种包管理器。主要应用在fedora,redhat,centos等发行版上。yum remove 是删除,yum install 是下载。

2024-12-05 11:13:56 912

原创 文件的一些命令

我们程序数据需要输出到外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员堆各种设备进行方便操作,我们抽象出流的概念,我们往流输入,再从流读取数据。fgets(字符数组的指针,个数,流)与fopen(文件名,“r”)搭配,如果个数是n,但是只能读到n-1个,如果文件换行了,读下一行的话需要在写一次fgets。在内存中创建一个文件信息区,文件信息区与创建的文件有关联,pf可以通过文件信息区找到文件进行操作,打开成功为文件信息区的起始地址,打开失败时NULL.

2024-11-10 15:02:15 902

原创 数据结构排序

排序:排序,是将一段数据,按照关键字的大小进行排列序。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存上,根据排序过程的要求不能再内存之间移动数据的排序。

2024-10-27 14:14:32 881

原创 数据结构二叉树

概念:数是一种非线性的数据结构,根在上,节点在下。节点的度:一个节点含有的子树的个数称为该节点的度。叶节点:度为零的称为叶节点。父节点:一个节点含有子节点,这个节点就是其子节点的父节点。子节点:一个节点含有的子树的根节点就是该节点的子节点。兄弟节点:具有相同父节点的互称兄弟节点。节点的层次:从根开始定义,根为第1层,根的子节点为第2层。结构:空树是唯一一个节点指向空。根节点在最上方第一个,没有子节点的节点是叶子节点。父结点是子结点的上一层。任何一颗树都可以看做根和他的子树构成。

2024-10-13 19:51:05 364

原创 线性表-栈1和队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进出FIFO入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为对头。栈:一种特殊的线性表,其只允许在固定的另一端进行插入和删除元素操作。进行数据的插入和删除操作的一端称为栈顶,另一端称为栈底。队列也可以数组和链表的结构实现,但链表更佳,因为删除队列的头部。压栈:栈的插入操作叫做进栈或压栈,入数据的地方在栈顶。栈的实现可以通过数组和链表来实现,但数组为最佳。出栈:栈的删除操作叫出栈。2.队列的表示和实现。

2024-09-08 14:53:37 508

原创 函数的了解

光靠常用的库函数不能做出需要的代码,所以需要自定义函数。库函数与自定义函数的概念是一样的。需要函数名,返回值类型,函数参数。但是自定义函数需要靠程序员自己设计来完成相应的工作。

2024-08-29 15:53:57 479

原创 时间复杂度和空间复杂度的计算

在计算机中时间复杂度是一个函数,它定量描述算法的运行时间。一个算法所消耗的时间,从理论上来说无法进行计算,只有在计算机上进行运行才能知道。因此,在我们不能上机时也需要计算的时候,因为语句的执行次数与算法所花费时间成正比,就可以根据算法中的基本操作执行次数来计算算法的时间复杂度。

2024-08-29 15:53:43 669

空空如也

空空如也

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

TA关注的人

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