自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux权限介绍

Linux中的粘滞位(Sticky Bit)是一种特殊的文件系统权限标志,主要用于目录,以限制对目录中文件的删除和重命名操作.一个文件是否能被删除,与文件的rwx权限本省无关,以文件所处的目录w权限有关.任何一个人都能在共享目录下新建文件,但是不能让文件非拥有者删除文件.:假设当前用户是 user1,工作目录是 /home/user1,执行 su - user2 后,用户身份切换到 user2,工作目录会变为 /home/user2,并且加载了 user2 的环境变量和配置文件。

2025-02-19 09:32:06 524

原创 Linux中sudo命令的详细介绍

名称:sudo = Super User DO(以超级用户身份执行)作用:允许普通用户临时以 root(超级管理员)或其他用户的权限执行命令。核心价值:在保证系统安全的前提下,赋予用户有限的提权能力。

2025-02-18 14:24:09 267

原创 C++高阶数据结构 -- 《 图 》

有向图和无向图:在有向图中,顶点对是有序的,顶点对称为顶点x到顶点y的一条边(弧),

2024-12-23 19:03:21 823

原创 C++高阶数据结构 --《 并查集 》

从上图可以看出:编号6,7,8同学属于0号小分队,该小分队中有4人(包含队长0);编号为4和9的同学属于1号小分队,该小分队有3人(包含队长1),编号为3和5的同学属于2号小分队,该小分队有3个人(包含队长1)。注意:这里的初始化状态是-1,表示一棵树,该位置是根。特点:跟堆类似,用下标表示关系, 双亲表示法(父亲)(根位置为负数,孩子位置为双亲的下标)这里表示10棵树,10个集合。

2024-12-19 09:35:19 738

原创 C++--map和set的使用介绍

set的声明如下,T就是set底层关键字的类型set默认要求T⽀持⼩于⽐较,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现仿函数传给第⼆个模版参数大于比较set底层存储数据的内存是从空间配置器申请的,如果需要可以⾃⼰实现内存池,传给第三个参数。⼀般情况下,我们都不需要传后两个模版参数。set底层是⽤红黑树实现,增删查效率是O(logN) ,迭代器遍历是⾛的搜索树的中序,所以是有序的。map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型。

2024-11-28 10:32:29 773

转载 C++--多态语法介绍

多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。

2024-11-17 17:54:12 936 1

原创 二叉搜索树介绍

所以综合而言⼆叉搜索树增删查改时间复杂度为: O(N)那么这样的效率显然是⽆法满⾜我们需求的,后续还会继续讲解⼆叉搜索树的变形,平衡⼆叉搜索树AVL树和红⿊树,才能适⽤于我们在内存中存储和搜索数据。

2024-11-17 16:01:20 597

原创 C++中的stack和queue介绍

stack的介绍堆栈是一种容器适配器,专门设计用于在后进先出(LIFO)的上下文中操作,其中元素仅从容器的一端插入和提取。queue的介绍队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列.底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。

2024-10-28 20:59:13 906

原创 C++中的list介绍(常用函数)

list的文档及介绍。list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展的能力。以下为list中一些常见的重要接口。

2024-10-22 14:59:06 737

原创 C++中的vector介绍(常用函数)

vector的文档介绍vector是序列容器,表示可以改变大小的数组。(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造int main()//无参的构造//n个val的构造//拷贝构造//迭代器区间构造return 0;

2024-10-15 14:48:32 1196 1

原创 C++中的string介绍(常用函数)

在构造时,将资源的计数给成1,每增加一个对象使用该资源,就给计数增加1,当某个对象被销毁时,先给该计数减1,然后再检查是否需要释放资源,如果计数为1,说明该对象时资源的最后一个使用者,将该资源释放;C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP。当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

2024-08-17 17:12:35 806

原创 C/C++内存管理

内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。

2024-08-03 11:27:42 709

原创 C++--类和对象(下)

• 尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。• 内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其他地⽅都⽤不了。,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。

2024-07-26 10:43:04 1050

原创 C++--类和对象(中)

析构函数与构造函数功能相反,析构函数不是完成对对象本⾝的销毁,⽐如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了,不需要我们管,C++规定对象在销毁时会⾃动调⽤析构函数,完成对象中资源的清理释放⼯作。传值返回会产⽣⼀个临时对象调⽤拷⻉构造,传值引⽤返回,返回的是返回对象的别名(引⽤),没有产⽣拷⻉。

2024-07-25 13:36:23 851

原创 C++---类和对象(上)

• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。这里我们就用Date类来做个样例class Datepublic://成员函数private://成员变量int _year;int _month;int _day;

2024-07-23 17:48:53 704

原创 插入/选择/希尔/堆/冒泡/快速/归并/计数排序——大集合

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

2024-07-19 12:22:23 1886

原创 C++入门知识

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace zx//关键字加命名空间的名字int a = 10;int val;• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。int a = 10;int a = 20;• C++中域有函数局部域,全局域,命名空间域,类域;

2024-07-10 12:25:39 829 1

原创 判断是否为完全二叉树

1.完全二叉树的概念:对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。2.思路:可以采用层序遍历的方法,把节点依次放入队列中,空节点也要放进去,在出队列的时候,出到空了,就开始遍历整个队列,如果整个队列都是空节点,则是完全二叉树,遇到非空节点,就不是完全二叉树。后面非空节点一定是前面非空节点的孩子,前面非空节点已经出了队列,那么后面的非空节点肯定也已经入了队列。这里我没有写队列的数据结构,我是写好了,直接拿来用的。

2024-07-07 19:20:25 180

原创 二叉树节点个数(C语言)

递归解答。

2024-07-06 10:35:13 386

原创 二叉树中的前序、中序、后续遍历(C语言)

递归分解图。

2024-07-06 10:18:14 521

原创 Topk问题

从N个数中,找出最大的前K个数,我们这里给10000个数,找出最大的前10个。个数,与堆顶的数据进行比较,比堆顶的大,就代替堆顶的数,再使用。在完成代码后,我们如何确保我们找出来的数就是最大的那几个?我们可以自己在数据文件中添加数据,明显的比原来的数据大。b.建一个K个数据的小堆,从数据文件中遍历。a.打开一个文件,将数据写入文件中。说明我们成功找出了最大的K个数。

2024-07-05 21:13:19 388

原创 C语言求完全平方数(不一样的方法)

第一种方法:使用sqrt()函数,判断sqrt() == (int)sqrt()是否相等。第三种方法:使用奇数平方和的规律,奇数平方和等于奇数个数的平方和。第二种:用小于n的数i除以n,判断i* i==n是否相等。求完全平方数,我们经常使用的有两种方法。

2024-06-15 10:17:12 1788 3

原创 链表的回文结构的判定(C语言)怎会如此简单!!!

链表的回文结构,轻松拿捏!!!

2024-06-03 12:54:18 319

原创 设计循环队列(C语言)怎会如此简单!!!

C语言使用数组,实现循环队列,简简单单!!!

2024-05-26 09:36:38 995 3

原创 用栈实现队列(C语言)

如果我们要出数据的话,我们根据队列的出入原则,应该出数据1,所以我们可以把pushst里面的数据全部倒入到popst中,那么popst中的数据为(1,2,3,4).pushst拿来入数据,popst拿来出数据,刚好可以满足队列的需求。想再出数据时,已经没有数据了,我们需要从pushst里再次倒入数据(5,6),先对popst判空,如果为空,我们需要倒入数据后,再删除数据。根据题目,我们可以知道,我们需要用两个栈来实现队列,先要对连个队列进行销毁,再对两个栈的结构体销毁。两个栈为空,队列才为空。

2024-05-25 17:51:00 1105

原创 用队列实现栈

用队列实现栈,简简单单!!!

2024-05-24 13:54:48 717

原创 随机链表的深拷贝

val为11的节点的前一个旧节点的random指针指向的是val为3的旧节点。因此,val为11的新节点的random指针指向的是val为3的旧节点的next指针,也就是val为3的新节点。新节点的next指针指向前一个旧节点的next指针,新节点的random指针指向前一个旧节点的random指针的next指针,值找到所对应的节点,记录该节点的位置,就像数组一样,新链表中的。并连接起来,在链接的过程中,新节点的val值等于前一个节点。解题思路二:首先在旧链表中的每一个节点后创建一个新节点,

2024-05-11 19:02:39 310 1

原创 数据结构之单链表之环形链表

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。

2024-05-06 09:32:13 306 2

原创 环形链表知识点

原理:当慢指针走到圆环的第一个节点,这时快指针已经进入到了圆环当中,慢指针走一步,快指针走两步,假设慢指针走到圆环当中的第一个节点时,慢指针和快指针相差N步。按照刚才的分析方法,我们可以知道慢指针走一步,快指针走3步,那么快指针和慢指针之间相差的步数就是N+1-3 = N-2;因此,当慢指针走一步,快指针走3步,不会被追击上的条件不成立,因此,当慢指针走一步,快指针走3步时,一定会被追击上。但是,如果C是偶数,则C-1是奇数,又会造成N是奇数,就会一直追击,则追不上。如果N为偶数,则在第一轮时,就追上了。

2024-05-05 17:47:11 684

原创 C语言二分查找的区间问题

什么是二分查找呢?二分查找:在有序数组中查找某一特定元素的搜索算法。二分查找又称折半查找,通过将数组折半,用中间值和查找值作比较,多次使用,直到找到要查找的值。注意:二分查找的前提是,数组必须是要的。

2024-05-03 21:15:33 346 1

原创 程序中的编译连接介绍

链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。汇编是将汇编代码转换成可执行的机器指令,每⼀个汇编语句⼏乎都对应⼀条机器指令。就是根据汇编指令和机器指令的对照表⼀⼀的进⾏翻译,也不做指令优化。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列。接下来语法分析器,将对扫描产⽣的记号进⾏语法分析,从⽽产⽣语法树。静态语义分析通常包括声明和类型的匹配,类型的转换等。在ANSI C的任何⼀种实现中,存在两个不同的环境。,生成相应的汇编代码文件。

2024-04-04 15:57:19 1055 1

原创 C语言中的文件和文件操作

1.1文件存储在磁盘(优盘)上的文件就是文件。文件分为程序文件和数据文件(从文件功能的角度来分类的)。1.2程序文件以.c或者.obj或者.exe等结尾的文件就是程序文件。例如:源文件,目标文件,可执行程序等…1.3数据文件数据文件不一定是程序文件,而是程序运行时读写的数据,比如程序运行时需要从中读取数据的文件,或者需要输出内容的文件。数据文件又分为二进制文件和文本文件。1.4文件名文件名是文件的文件标识,以便用户识别和使用。

2024-04-04 13:25:18 922 1

原创 C语言结构体介绍

最后,结构体的总大小是成员当中最大对齐数的整数倍,结构团体的最后一个成员的地址在偏移量为8的地址处,共9个字节,不是最大对齐数的整数倍,因此,结构体的总大小为12个字节。结构体的整体大小就是最大对齐数(包括了嵌套的结构体成员)的整数倍的地址处。a占三个比特位,b占4个比特位,还剩一个比特位,不够放c,因此,再申请一个字节的空间放c,还剩下三个比特位,不够放d,因此再申请一个字节。其次,int类型的变量的对齐数是4,小于8,因此,对齐数就是4,要在偏移量为4的整数倍的地址处存放。因此放在偏移量为8的地址处。

2024-03-27 16:15:59 2165 1

原创 整数和浮点数在内存中的存储

(2)在存储的过程中,E是一个无符号整型,8个bit位的话,大小就在0~~255之间,11个bit位的话,大小就在0~2047,但是科学计数法中,指数可以是负数的,所以,在8位时,指数是先+127后,再存储到内存中的,在取出的时候,会先将指数-127,在进行计算的。(1)在存储的过程中,M是需要写成1.XXXXXX的形式,但是在存储的过程中,我们只需要将小数点后面的小数位进行存储,不用存储小数点前面的1,在取数据的时候,再返回1就行了,这样可以提高数据存储的精度,32位上我们就可以存储24个有效数字了。

2024-03-22 16:26:27 855 2

原创 atoi函数模拟实现

和数字字符再进行转换,如果遇到其他字符,就结束。转化时会跳过前面的空白字符,遇到。

2024-03-21 09:59:38 306 1

原创 C语言字符函数、字符串函数、内存函数总结

在拷贝过程中遇到’\0’时不会停止的,如果src后面的内存和dest后面的内存重叠,结果都是未定义的。函数是用来一个字符串是否存在与另一个字符串中,如果存在,则返回字符串在另一个字符串中第一次出现的位置。```strcmp``是字符串比较函数,用来比较字符串的大小,从第一个字符开始比较,比较的是字符的ASCII码值。函数有两个参数,一个参数是目标空间的地址,一个参数是源函数的地址,再拷贝过程中,'\0’也将会背拷贝。函数是用来计算字符串的长度的,计算的是’\0’之前的字符个数。

2024-03-19 18:47:43 1029

原创 C语言指针总结

二维数组传参实际上传递的是数组首元素的地址,类似于一维数组一样,传递的是首元素的地址,我们可以把二维数组看成一个一维数组,二维数组里的每个元素都是一维数组,那么首元素的地址就是一维数组整个数组的地址,我们需要使用数组指针来接收。指针数组的每一个元素都是指针。指针变量的大小是由地址的大小来决定的,地址的大小是由机器的地址线数量决定的,32位平台的指针变量的大小是4个字节(32个bit位),64位平台下是8个字节(64个bite位)。(2)&数组名,这里的数组名代表的是整个数组,取出的是整个数组的地址。

2024-03-10 17:46:34 1855 1

原创 Sleep()函数和屏幕清除的system(“cls“)相互使用

Sleep()需要包含的头文件为。

2024-03-01 15:00:22 210 1

原创 数组的基本知识总结

数组下标是从0开始的,也就是说,int arr1[0]代表arr数组下标为0的元素,也是数组arr的第一个元素。二维数组的初始化与一维数组也有相似之处,二维数组的行下标是从0开始的,列下标也是从0开始的。为了更的观察,二维数组的初始化也可以在大括号里使用大括号,代表每一行的元素。是数组类型,4表示元素个数,元素个数需要用[]方括号括起来。中的常量值可以是变量,但是数组大小一旦确定,就无法改变。计算的是arr数组的大小,单位是字节,常量值2代表的是数组每行有多少个元素。计算的是一个数组元素的大小,因此,

2024-02-02 11:01:26 456

原创 C语言扫雷游戏是如何实现的?

但是,这里有一个不方便的地方,那就是在排除雷的时候,要计算坐标附近的八个位置上是否有雷,如果坐标是(9,9),那我们应该如计算呢?之后,我们就可以来布置雷,布置雷可以采用生成随机数的方法来,生成雷的坐标位置,然后雷布置好之后就可以排除雷了,具体细节请向下翻阅。,用于存放数据,一个数组主要用来存放布置雷的信息,另一个数组用来存放排除雷的信息,两个二维数组的联合使用,能够更好的提高代码效率。用户会输入正确的坐标,这时我们就应该打印棋盘,并在打印的棋盘中用户输入的坐标出显示出周围8个坐标雷的个数。

2024-01-31 19:18:12 634

空空如也

空空如也

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

TA关注的人

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