自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 string 类

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。

2024-10-10 21:13:44 1079

原创 模版初阶

class 类模板名// 类内成员定义。

2024-10-03 23:45:30 344

原创 内存管理

class Apublic :: _a(a)~A()private://注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。int _a;int main()// new/delete 和 malloc/free最大区别是// new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);

2024-10-03 10:19:45 878

原创 类和对象(下)

• 之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。• 每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地⽅。• 引⽤成员变量,const成员变量,没有默认构造的类 类型成员变量,必须放在初始化列表位置进⾏初始化,否则会编译报错。• C++11⽀持在成员变量声明的位置给缺

2024-10-01 20:49:21 1075

原创 C++日期类实现

/ 获取某年某月的天数//静态数组//如果是闰年的2月份,2月份多一天return 29;//返回某年某月的天数// 全缺省的构造函数Date::Date(int year , int month , int day )//全缺省函数,声明时给缺省值,定义函数时不要给_day = day;// 拷贝构造函数// d2(d1)// 赋值运算符重载if (*this!= d)//防止给本身赋值//d1=d2的返回值是d1,也就是*this// 析构函数。

2024-09-27 11:13:42 315

原创 类和对象(中)

7.如果类中没有申请资源时,析构函数可以不写,直接使⽤编译器⽣成的默认析构函数,如Date;

2024-09-23 22:17:31 987

原创 类和对象(上)

Stack为类的名字。

2024-09-22 10:00:54 1096

原创 C++入门基础

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。如:• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴不同的域可以定义同名变量,所以下⾯的rand不在冲突了。我们可以发现,两个不同的命名空间里面的变量是同名的,但是因为namespace本质是定义出⼀个域这个域跟全局域各⾃独⽴,所以就不会冲突了• C++中域有函数局部域,全局域,命名空间域,类域;

2024-09-21 09:31:48 666

原创 插入排序 (直接插入排序与希尔排序)

1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:O(N^2)3. 空间复杂度:O(1)4. 稳定性:稳定1. gap越大,大的可以越快跳到后面,小的数可以越快跳到前面,越不接近有序gap越小,跳得越慢,但是越接近有序。当gap==1相当于直接插入排序就有序了2. 时间复杂度:O(N^1.3)3. 空间复杂度:O(1)4. 稳定性:不稳定。

2024-07-14 17:43:36 380

原创 回文结构(oj题)

比如:1->2->2->1。找到中间结点 (第二个2) ,反转链表成 2->1。这时就是比较两条链表的每个结点的值是否对应相等的问题了,是对应相等就是回文结构。先找到这条链表的中间结点,从中间结点处,开始反转链表。

2024-06-08 20:33:27 195

原创 反转链表 (oj题)

1.定义三个指针,p1先指向NULL p2指向头结点 p3指向第二个结点。

2024-06-08 20:03:38 554

原创 链表的中间结点

三、题解代码。

2024-06-08 19:43:17 311

原创 有效的括号(oj题)

6.最后要判断是否栈是否为空栈,如果是空栈,就说明所有扩号是匹配成功的,就返回true。4.重复循环,直至字符串读取完,或者在读完之前,就直接就判断出了匹配错误的结果。如果字符串都是右括号,这样就没有元素入栈,最后判断栈为空,得到了错误的结果。下,去取栈的栈顶元素,判断栈顶元素是否和此时读取的右括号之间是否配对。1.依次读取字符串,判断是否为左括号,如果是,就将其入栈。2.如果读取的不是左括号,就说明是右括号了。3.如果配对,就让栈顶的左括号出栈。如果不为空,就返回false。利用栈的性质,后进先出。

2024-06-08 19:37:30 266

原创 另一棵树的子树(oj题)

【代码】另一棵树的子树(oj题)

2024-05-31 21:07:50 356

原创 对称二叉树(oj题)

给你一个二叉树的根节点。

2024-05-31 19:54:17 261

原创 相同的树(oj题)

遍历整颗树,判断两棵树的每个位置的结点都相同。每个结点的左右孩子结点都要综合判断。

2024-05-31 19:29:40 236

原创 二叉树的前序遍历(oj题)

【代码】二叉树的前序遍历(oj题)

2024-05-31 19:11:52 285

原创 二叉树的构建和遍历(oj题)

【代码】二叉树的构建和遍历(oj题)

2024-05-31 13:01:04 181

原创 平衡二叉树(oj题)

【代码】平衡二叉树(oj题)

2024-05-31 08:34:22 265

原创 翻转二叉树(oj题)

【代码】翻转二叉树(oj题)

2024-05-31 08:25:43 128

原创 二叉树的实现

因为队头元素每出队一次,都在更新,所以所有的结点都是按照层次顺序依次进入队列,然后依次出队列。

2024-05-29 20:06:17 494

原创 单值二叉树(oJ题)

运用子函数,将每个结点的值都与最大的根结点的值进行比较。将每个结点的值都与其的父结点进行比较。

2024-05-29 13:02:34 246

原创 求二叉树的最大深度(oJ题)

【代码】求二叉树的最大深度(oJ题)

2024-05-23 23:13:13 265

原创 利用 堆 找出10万个数字中的最大的前 k 个数

1.先取所有数据中的前k个元素,将其构成小堆,此时堆顶元素是k个元素中最小的那个数据2. 然后,就接着读取数据,如果读取到的数据大于堆顶元素,让其取代堆顶元素的位置,让其进入堆中,并调用向下调整函数,让当前堆中k个数据中,最小的数据来到堆顶位置,继续重复执行,直至读取完所有数据3.这样就可以完成找到所有数据中的最大的前k个数据了(堆中的k个数据就是要找到的)

2024-05-23 12:40:58 367

原创 堆的建立和操作

int size;}Heap;

2024-05-22 23:16:55 392

原创 用栈实现队列(OJ题)

但是要留下最后一个元素在A队列,这时候就将A队列的那个最后的数据出队返回,这就是我们要的栈顶元素。2.元素出栈时,就是将有将存储了数据的队列(A队列)里面的元素依次出队列,1.有两个队列,每次 元素进栈的时候 插入数据在已经有数据的队列之中。并依次入队列到另一个开始没存储数据的队列(B队列)中,假设有数据的是A队列,没有元素的是B队列。这时A队列为空,B队列有数据。

2024-05-16 18:46:54 180 1

原创 队列实现栈(OJ题)

(A栈每顺序出栈一次,就入栈到B栈中,这时,B栈里面的数据存储的数据的顺序就刚好与原来A栈里面的数据存储的顺序刚好相反)此时 A栈为空,B栈有数据,这时B栈的栈顶元素刚好就是, 原来A栈的第一个元素,也就是我们想找到的队列的队头元素。2.元素出队时,是将有将存储了数据的栈(A栈)里面的元素依次出栈并依次入栈到另一个开始没存储数据的栈(B栈)中。现在我们要将B栈里面的元素再依次出栈,并入栈到A栈之中,恢复到A栈有数据元素,B栈为空的时候。假设有数据的是A栈,没有元素的是B栈。

2024-05-16 15:31:53 211

原创 设计循环队列(OJ题)

可参考文章:https://blog.youkuaiyun.com/babilunlaobanjiu/article/details/138816761。

2024-05-14 14:45:33 399

原创 数据结构——循环队列(数组)

为解决队满和队空的判断条件相同。我们 采用 损失一个单元不用的方法即当循环队列元素的个数是MAXSIZE-1时,就认为队列已满(front指向空的单元)这样循环队列的队满条件就变成 :循环队列的队空条件依旧是: 结果:插入3次,满了。第四次插入不了 结果: 结果;出队之后,再入队一次,打印新的循环队列

2024-05-13 20:09:44 2316

原创 数据结构——队列(链表实现)

原来 1 2 3 4 入队 出队两次, 变成 3 4 .

2024-05-11 21:40:14 638

原创 数据结构——栈

【代码】数据结构——栈。

2024-05-11 20:57:55 493

原创 有效的括号

1.创建一个顺序栈2.判断字符串当前字符是否为左括号,是的话就入栈3.如果字符串的当前字符是右括号,就需要去此时的栈顶元素,进行匹配4.如果匹配失败就直接返回false5.如果无左括号入栈,栈中也就无元素,就直接返回false6.循环结束后,最后判断栈是否为空,为空说明成功,返回true,反之就是false

2024-05-08 23:10:54 369

原创 相交链表 题目

2.判断两条链的尾结点。如果两条链的末尾的结点不相同,说明两条链并没有相交,反之,相交了。4.先将A链设为长链,B设为短链。如果B链更长,将B链赋给长链,A链赋给短链。3.计算两条链的结点之差的绝对值,定义长链和短链,防止代码冗余复杂。5.再让长链先走二者的差数步,这样可以保证两条链同时到达相交的结点。6.如果相等,就跳出循环。最后:返回两条链的相交的结点。1.计算A链一共有几个结点,计算B链一共有几个结点。

2024-05-04 22:23:12 168

原创 环形列表II 题目分析

说明 不关 meet 指针绕了环多少圈,meet 指针总是 能和 head 指针在 开始入环的结点处相遇。如果两条链的末尾的结点不相同,说明两条链并没有相交,反之,相交了。如果B链更长,将B链赋给长链,A链赋给短链。3.计算两条链的结点之差的绝对值,定义长链和短链,防止代码冗余复杂。5.再让长链先走二者的差数步,这样可以保证两条链同时到达相交的结点。2.将相遇的下一个结点 newhead 作为一个链表的头结点。最后:返回两条链的相交的结点。1.计算A链一共有几个结点,计算B链一共有几个结点。

2024-05-04 22:15:44 610

原创 环形列表 题目分析

当慢指针刚好进入环时,二者的相对距离为N 环的结点数量为C1.当N为偶数时,fast一次走3步能成立2.当N为奇数时并且C为奇数时,fast一次走3步也能成立3.当N为奇数并且C为偶数时,fast一次走3步不能成立4.数学方法思考设进入环之前的路程为Lfast 指针 一次走3步,slow 一次性走 1步所以: 3*L == L + x*C + C - N化简得: 2*L == (X+1)*C - N观察此式子 等号左边 2*L 一定是 偶数 ,所以等号 右边一定也是 偶数。

2024-05-04 20:47:02 742

原创 随机链表的复制

三、代码解释。

2024-05-04 11:46:20 410

原创 移除链表元素

【代码】移除链表元素。

2024-04-11 22:41:27 459

原创 C语言文件操作

磁盘上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如⽂件输出流)

2024-03-27 22:41:14 783

原创 模拟实现 atoi 函数

【代码】模拟实现 atoi 函数。

2024-03-24 11:01:14 320

原创 动态内存管理

所以如果我们对申请的内存空间的内容要求初始化,那么可以很⽅便的使⽤calloc函数来完成任务。

2024-03-22 08:15:40 602

空空如也

空空如也

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

TA关注的人

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