自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】权限(shell运行原理、概念,Linux权限)

他看上了如花,但是有不好意思直接表白,就让家人找媒婆帮他提亲,所有的事情他都直接跟媒婆沟通,由媒婆转达他的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的。那是因为对用户身份的识别只进行一次,此时我被识别为拥有者,就只有拥有者的权限,而没有所属组的权限。只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写 权限.那么,如何创建一个可以多人共享的目录呢?对目录来说,具有进入目录的权限。,进行提权,不过sudo的使用,需要进行配置,后面再说明。

2024-07-28 13:00:00 1057

原创 【C++】string模拟实现

我们的构造函数直接写一个全缺省的,这样就不用分开写无参和有参的构造了。上面缺省值不能给,因为初始化列表那里会报错,为空,无法。缺省值也不能给,而要给,因为的类型是,不能给。其实给也是多余的,虽然可以这样写,我们可以直接给空字符串"",系统会在后面自动加上的。operator[ ]需要重载两个,因为string对象可能是const修饰的。这里迭代器的模拟实现是容易的,不同的容器有不同的迭代器,只是名字相同。当我们用算法库里面的模板swap时,效率很低,它会进行3次拷贝+1次析构。

2024-07-28 08:00:00 387

原创 【C++】string类(常用接口)

hello!各位铁子们大家好哇。

2024-07-27 21:33:32 683

原创 【C++】内存管理和模板基础(new、delete、类及函数模板)

注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与 free不会。operator new实际就是对malloc的封装,是给底层用的。就像sizeof是在编译时作用,运行后直接变成底层指令。operator new与operator delete函数new和delete是用户进行动态内存申请和释放的操作符operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,

2024-07-25 07:30:00 728

原创 【C++】string类(介绍、常用接口)

include头文件。

2024-07-24 22:12:00 744

原创 【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)

的普通函数,不属于任何类,但需要在 类的内部声明,声明时需要加。

2024-07-23 08:30:00 865

原创 【C++】类与对象(日期计算器)

上方实现时,有日期+天数和日期+=天数。二者实现其中一个即可复用另一个。但是要先实现哪一个更好呢?声明流插入<<和流提取>>时,应在类外面声明,不然this指针会占据第一个形参,打开,可以进行友元声明,就可以在不打开。就只能是左操作数了,打印时就会变成。在类外面声明时,为了不把。

2024-07-22 22:28:36 244

原创 【C++】类与对象(运算符重载、const成员、取地址重载)

hello!各位铁子们大家好哇。C++引入了运算符重载是具有特殊函数名的函数,也具有其 返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。函数名字为:关键字。上方operator的使用有两种:2.(d1==d2)我们一般使用第二种,第一种是编译器从第二种自己转换的。由上图可知,运算符重载成全局的就需要成员变量是公有的, 可这样封装性就没了保证。下面是解决方法:我们把operator放到类里面,这样就不需要把内置类型的变成公开的了。

2024-07-22 21:00:00 1044

原创 【C++】类与对象(构造函数、析构函数、拷贝构造函数、常引用)

注意:拷贝构造时要传引用,不能传值。如果传值,根据C++规定,会调用拷贝构造,这样就会无穷递归下去,发生错误。分析:在调用func1时要传值传参,就会先调用拷贝构造,然后才能调用func1。运行时发生错误,显示没有默认构造函数可用。因为Time类中已经有拷贝构造函数了,而拷贝构造也是构造函数,所以编译器不会再生成默认默认构造函数,这时就需要我们自己写出构造函数。注释的第二行是强制编译器生成默认构造函数。上面的代码运行后会崩溃。

2024-07-22 16:21:29 926

原创 【C++】类与对象【定义、访问限定符、this指针】

hello! 各位铁子们大家好哇。 今日更新了类与对象的定义、访问限定符、this指针的内容面向过程和面向对象初步认识 类的引入C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。在C++中更喜欢用class来代替。 类的定义 class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。类的两种定义方式:一

2024-07-22 15:00:00 978

原创 【C++】基础知识讲解(引用、内联、auto,基于范围for循环)

为了解决这一问题,C++11中引入一个新关键词nullptr。注意:在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr。

2024-07-22 09:09:44 1082

原创 【C语言/数据结构】二叉树(层序遍历|判断完全二叉树|性质)

hello!各位铁子们大家好哇。

2024-07-22 08:00:00 432

原创 【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

当有两个同名变量时,会优先在找局部的,如果找不到,再找全局的。如果我们想打印0,就可以加上 ‘’ 前面不加域的情况下,默认是空,也就是全局域,该符号叫域作用限定符。当我们需要定义两个全局变量时,我们可以使用namespace关键字。这样两个同名变量x就在各自的命名空间域中。当前局部域全局域如果指定了,直接去指定域搜索命名空间中,还可以定义函数,结构等。使用结构时,注意命名空间名称和作用限定符加在struct后面。同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个。

2024-07-21 22:34:53 706

原创 【数据结构】二叉树(遍历,递归)

hello!各位铁子们大家好哇。今日更新了树的遍历,递归的相关内容注意:N代表空分析:根据前序遍历的规则(根左右),先访问根1,然后左子树2,2的左子树3,3的左子树是N,右子树也是N,然后返回到2的右子树N,然后返回到1的右子树4,接着是4的左子树5,5的左右子树都是N,然后返回到4的右子树6,6的左右子树都是N。

2024-07-21 22:18:57 296

原创 【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)

9,2,8,5不用调,我们从1开始,1和9满足小堆。接着来到4,交换后的1和2,1更小,4就和1交换。上方的过程的时间复杂度是O(N*logN),他跟上方的向上调整建堆相似,都是多*多,少*少的关系。接着从第k+1开始的数开始与根结点比较,如果大于,就替换,然后进行向下调整,恢复成堆的形式。对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。因为最后的结果中的h是树的高度,不方便看出时间复杂度,替换成N(节点的个数)

2024-07-21 22:09:03 679

原创 【数据结构】二叉树-堆(函数实现)

大家好,今天分享二叉树-堆的基本函数实现!

2024-07-17 12:00:00 256

原创 【数据结构】树和二叉树堆(基本概念)

大家好,今天让我们来了解树和二叉树堆树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。之所以把它叫做树,是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的树。·有一个特殊的结点,称为根结点,根结点没有前驱结点!除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、...、Tm,其中每一个集合Ti(1<=i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继因此,树是递归定义的。

2024-07-16 22:49:52 641 1

原创 【Linux常用基本指令大全】详解!!!

说明 : cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。2. 当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。

2024-02-18 23:30:03 1026 1

原创 【数据结构与算法】队列的详细学习(普通队列,循环队列,增删改查判断空和满的详细使用)!

大家好,今天我们进入队列的学习!队列具体操作的源码附在最后!首先我们来认识一下队列的概念及结构:队列的结构和栈完全相反,栈只能再栈顶进再从栈顶出,遵从后进先出(LIFO);而队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,遵循的是先进先出,后进后出。入队列:进行插入操作的一端称为出队列:进行删除操作的一端称为,队列的图示如下上一篇博客讲了栈的具体内容,其中有个问题,就是入栈的顺序是1,2,3,4,问出栈的顺序是否一定为4,3,2,1。

2024-02-08 22:35:27 990

原创 【数据结构与算法】栈的深入学习(题目练习与源码)!

大家好,本篇的内容: 栈的认识,栈的使用,栈的实现!栈的实现源码附在最后!首先,先让我们来认识一下栈:一、栈的概念栈,一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。 那么,如何实现栈呢?通过我们

2024-02-07 21:59:07 842 1

原创 【数据结构与算法】顺序表与链表(单链表和双链表)超详解图示与源码。

就是在头节点的前面给它再加一个结点,让它充当头节点,但它不存储具体的数据,只是更方便进行头插头删等操作,哨兵位的含金量不是很高,有时候方便用来刷OJ题,这里大家简单了解下,有兴趣的朋友自己敲敲代码试一下把。2.满了之后只能扩容,而扩容是有一定的消耗的,扩容一般是存在一定的空间浪费(假如空间100已经满了,扩容到200,只需要插入120个数据,那么就有80个浪费掉了)这里需要注意:我们的思路是把头节点的指向原本头结点的下一个结点,然后还需要free掉原本的头节点,这里会出现一种很常见的。

2024-02-05 20:47:54 1186 1

原创 【数据结构与算法】时间复杂度与空间复杂度详解和练习

求斐波那契数列第n项的值,我们知道,当我们要求第n项的值时,我们需要知道第n-1项和n-2项的值,而要求的第n-1项的值,我们需要求出n-2项的值,如此下去,我们可以发现,基本操作呈现。,即可以理解为当我们的F(3)在执行完毕的时候会释放栈空间,这个时候在执行右边的F(2),往回计算,所以最后可以推导出fibonacci()的时间复杂度为。,即可以理解为当我们的F(3)在执行完毕的时候会释放栈空间,这个时候在执行右边的F(2),所以最终开辟的空间大小以最深的来理解,即为N,所以空间复杂度为。

2024-02-03 22:35:46 1045 1

原创 strncpy,strncmp,strncat,strstr,memcpy,memmove等函数的模拟实现详解。

strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串。strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标。strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

2024-01-31 21:59:10 670 1

原创 strlen,strcpy,strcat,strcmp的模拟实现

大家好,今天我们来实现strlenstrcpy,strcat,strcmp这些长度不受限制的字符串函数的模拟实现。字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包。第一个字符串大于第二个字符串,则返回大于0的数字.第一个字符串小于第二个字符串,则返回小于0的数字.目标空间必须有足够的大,能容纳下源字符串的内容。参数指向的字符串必须要以 '\0' 结束。会将源字符串中的 '\0' 拷贝到目标空间。源字符串必须以 '\0' 结束。目标空间必须可修改。

2024-01-29 22:08:09 424

原创 【C语言】不同写法的数组名和指针变量分别表示什么含义。

4/8 a[0]是第一行的数组名,&a[0]取出的是数组的地址,取出的是第一行这个一维数组的地址,类型就是int(*)[4] &a[0]+1 就是第二行的地址,类型就是int(*)[4]a并非单独放在sizeof内部,也没有&,所以数组名a是数组首元素的地址,a+1就是第二个元素的地址//a+1 == &a[1] 是第2个元素的地址,是地址就是4/8个字节。a并非单独放在sizeof内部,也没有&,所以数组名a是数组首元素的地址,a+0还是首元素的地址//是地址大小就是4/8 Byte。

2024-01-28 22:41:33 603

原创 【初始C语言】扫雷游戏!

需要注意,我们需要设计俩个棋盘,我们需要先对一个棋盘的数据全置‘0’,然后随机设计几个雷,雷在棋盘中用‘1’来表示(这个棋盘不对外显示,不打印出来);另一个棋盘则全置‘*’,让玩家游玩,游戏的具体实现部分,则主要在‘0’‘1’棋盘实现,显示到‘*’棋盘上。1.如果这个位置不是雷,就要计算周围八个坐标的雷的个数,并显示出有几个雷。棋盘设计好接下来随机防止雷,注意,放过雷的地方就不可以再次放雷。

2024-01-24 21:55:15 401 1

原创 【初始C语言】:三子棋游戏!

需要注意,我们一开始初始化二维数组的时候将棋盘每个空都设置成了空格,而在下棋的时候,我们需要判断,是空格的地方我们才可以下棋,如果这个位置已经有了棋子,则显示该坐标被占有,需要重新选择,如果输入的坐标不在棋盘的范围之内,则显示坐标非法,需要重新选择。玩家下棋设置好之后,我们需要设置电脑下棋,而电脑下棋的位置玩家是不可能预测到的,所以电脑下棋需要随机性,同样,电脑下棋也需要判断坐标位置是否为空格。简单来说,游戏需在一个3*3的方格内进行,当其中一人的棋子可以连成一条直线时,即取得游戏胜利!

2024-01-22 20:34:59 398 1

空空如也

空空如也

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

TA关注的人

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