自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 *C++:string

标准模板库是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2024-09-20 20:59:00 162

原创 *C++:模板

如上图,Add(a1, (int)d1)是一个隐式类型转换,会产生临时对象,所以接收的时候,要用const对象,不过。引言:如果对于两个相似的类,但是他们的类型不同,我们也可以用类模板来实现,比如下面两个图,我们就可以用类模板来实现。重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。,比如上面说的Swap类模板,如果用const接收,它是没法改变的,更不要提交换了,所以。,是编译器根据被实例化的类型生成具体类的模具。,对于字符类型也是如此。,对于模板函数的使用,

2024-08-29 13:35:49 687

原创 *C/C++内存管理

1.调用函数申请空间2.在申请的空间上执行构造函数,完成对象的构造。

2024-08-27 15:35:25 974

原创 C++实现日期类(代码)

【代码】C++实现日期类(代码)

2024-08-17 20:53:48 151

原创 C++:类和对象

类的定义一般有两种方式,一种是一起定义,一种是分开定义(引用头文件,加上类域符)。C++编译器给每个非静态的成员函数增加了一个隐藏的指针参数,让该指针指向当前对象函数运行时调用该函数的对象,在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。2.特性构造函数。

2024-08-17 20:26:37 853

原创 数据结构:堆

满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆;通过对比,我们发现当N个数相对大一点的时候,向上调整建堆比向下调整建堆的建堆次数要多的多,从效率上讲,向下调整建堆绝对是更好的选择。是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。从时间复杂度上讲,向下是更佳的,但是从最后结果上看,向上和向下对堆排序整体的时间复杂度是没有影响的。堆在物理层面上,表现为一组连续的数组区间,将整个数组看作是堆。之后需重建堆,在此过程中,关键字之间的比较次数是()。

2023-11-23 19:48:59 929

原创 数据结构:栈和队列

从出栈上就可以明显的看出栈选择用顺序表实现的理由,我们只需要对top的大小做出改变就可以实现出栈。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。队列删除只能删第一个,不能选择一个删除。其实本质上就是一个删除节点的过程。出栈:栈的删除操作叫做出栈。栈中的数据元素遵守后进先出。压栈:栈的插入操作叫做进栈。队列就是先进的先出。

2023-11-23 15:52:11 74

原创 数据结构:排序

快慢指针法:先选keyi,prev为头,cur为下一个,然后找大,如果一直小就prev和cur一起走,如果有大的,那么prev不动,cur++,再遇到小的就换,遇到大的就只有cur走,直到cur越界,交换数据。所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j]

2023-11-23 15:36:21 197

原创 数据结构:单链表OJ

上述十道题都是很经典的链表OJ题,读者不妨一试,以加深对链表的了解。t=N7T8t=N7T8t=N7T8t=N7T8t=N7T8t=N7T8t=N7T8t=N7T8t=N7T8t=N7T8力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?

2023-11-02 21:48:31 87

原创 数据结构:二叉树

树是一种非线性的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

2023-11-01 12:28:28 57 1

原创 数据结构:链表

因为链表即便是NULL,也可以打印,无非是空链表,但是顺序表必须断言,因为ps指针指向的不是结构体数据,而是a,size,capacity,也就是说即使没有数据,a可以空,但是ps指向的这块空间不能为空,况且顺序表取决于size的大小而并非a中的数据。可以发现,这个写法会出现bug,也就是说没有成功完成尾删,关键就在于红框内的内容tail=NULL,这个写法是有问题的,因为我们知道,链表不是连续的,如果要找到链表中节点的位置就必须使用xxxx->next查找,没有连接的话是无法进行操作的。

2023-09-14 23:13:05 121 1

原创 数据结构:顺序表

上面那个图会出现debug,因为他的扩容是存在问题的,这里ps->capacity前面定义为4字节,乘2变为8字节,但是我们需要的是8个SLDataType(整形)位共计32字节,这里就产生了越界。当我们通过ptr3将代码的realloc范围控制到5后,再次realloc到20,发现地址不变,说明是在同一个地址上,也就是说ptr3的操作并没有将空间销毁,而是将数据回收。开辟对应的空间被占用,则另开辟一块更大的没有被占用的空间,将原数据拷贝到新空间,并释放原先的空间。数据不重复,则在下一个位置录入该数据。

2023-08-07 15:04:44 158 3

原创 数据结构:空间复杂度

如图,a和b所使用的是同一块空间,这里是主函数出发,F1进入,申请了一块空间,F1结束,这块空间是要被销毁的,但是这个时候栈帧销毁是把它还给了系统中而并非彻底销毁,也就是说下一次也就是F2执行的时候,b和a使用的是同一块空间,相当于a和b住酒店,a先住,住完退房给b住,实际上他们是在一个房间住的,房间并没有被销毁,只是还给了房管。这里是因为在F1里使用到了F2,这个时候只能再开辟一块空间,就好比住房,a还没退房,b就要来住房,那没办法,只能再给b找一间屋子,所以就开辟了两块空间。函数运行时所需要的栈空间(

2023-07-28 07:40:14 123 1

原创 数据结构:时间复杂度

该段代码就用到了3这条性质,第一个for是用来遍历整个数组的,也就是相当于把0~n这些数字全都存储到val里,此时是缺一个数的;如上图,是一个二分查找,最好的情况就是正中间的那个就是,也就是O(1),最坏的情况,就是不断地二分,直到分不下去的时候才找到,这种情况的话就是2*2*......*2=N,也就是logN。如上图冒泡排序,最好情况下是从头到尾排一次序,那么有几个数N,就是O(N),最坏的情况就是到最后一个数了才排好序,那么这个时候就要从头加到尾,这便是等差数列求和,此时最高级数为N^2。

2023-07-20 23:03:58 69

原创 扫雷C语言(包括拓展和雷点标记)

《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 相信大家都对上图中的数字和小旗好奇过,这些东西有什么用呢?首先,数字的话是说明以数字为中心的周围8个格子中的雷的个数,3表示周围8个格子里有3个雷,1表示1个雷。小旗的话表示标记出你认为的可能是雷的点,提醒你不要去踩这个雷。

2022-11-12 20:14:34 1028 3

原创 三子棋游戏(C语言)

游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子走成一条线就视为胜利,而对方就算输了,但是。总之,三子棋在我们平时玩的时候,是一个非常简单的游戏,但是在C语言编程时是一个相对困难且对初学者有一定挑战性的题目,需要反复斟酌琢磨,实战操演,才能掌握。这里我们建立一个新的头文件,负责声明函数和定义,再建立一个test源文件负责执行具体流程,game源文件负责具体编写函数。三子棋对于我们来说并不陌生,这是我们小时候经常玩的一个小游戏,今天我们呢就来研究一下如何用C语言来实现这一游戏。

2022-11-09 09:50:54 152 2

原创 青蛙跳台阶问题(C语言版)

n=1,一种方法;n=2,两种方法;n=3,三种方法;n=4,五种方法......也可以接着取,不难发现是f(n)=f(n-1)+f(n-2),这就是我们常说的斐波那契数列

2022-11-04 06:00:00 892

原创 汉诺塔问题(Hanoi)

操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,他通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。言归正传,汉诺塔问题的核心其实就是把上面的盘子移动到第三个柱子(辅助柱)上,然后把最底下的盘子移动到目标柱上,再把原先的柱子作为辅助柱,将其余盘子放在最大的盘子上。这时候就用到了函数的递归思想,通过函数的嵌套调用,来实现上述过程。

2022-11-03 11:34:58 3738 5

空空如也

空空如也

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

TA关注的人

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