- 博客(75)
- 收藏
- 关注
原创 string 类
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。
2024-10-10 21:13:44
1079
原创 内存管理
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
原创 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题)
6.最后要判断是否栈是否为空栈,如果是空栈,就说明所有扩号是匹配成功的,就返回true。4.重复循环,直至字符串读取完,或者在读完之前,就直接就判断出了匹配错误的结果。如果字符串都是右括号,这样就没有元素入栈,最后判断栈为空,得到了错误的结果。下,去取栈的栈顶元素,判断栈顶元素是否和此时读取的右括号之间是否配对。1.依次读取字符串,判断是否为左括号,如果是,就将其入栈。2.如果读取的不是左括号,就说明是右括号了。3.如果配对,就让栈顶的左括号出栈。如果不为空,就返回false。利用栈的性质,后进先出。
2024-06-08 19:37:30
266
原创 利用 堆 找出10万个数字中的最大的前 k 个数
1.先取所有数据中的前k个元素,将其构成小堆,此时堆顶元素是k个元素中最小的那个数据2. 然后,就接着读取数据,如果读取到的数据大于堆顶元素,让其取代堆顶元素的位置,让其进入堆中,并调用向下调整函数,让当前堆中k个数据中,最小的数据来到堆顶位置,继续重复执行,直至读取完所有数据3.这样就可以完成找到所有数据中的最大的前k个数据了(堆中的k个数据就是要找到的)
2024-05-23 12:40:58
367
原创 用栈实现队列(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.如果匹配失败就直接返回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
原创 C语言文件操作
磁盘上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如⽂件输出流)
2024-03-27 22:41:14
783
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人