- 博客(18)
- 收藏
- 关注
原创 KMP算法,next数组详解(c++)
sonstr[j]时,按照BF算法i时要回退到暴力for循环第几次开始对应的位置的,但是如果sonstr字符串是局部头尾对称的呢,比如sonstr是:abcabf我们可以知道当f与主字符串不相等时,f之前的字符串是头尾对称的,此时我们还需要将i回退吗,不需要因为既然能到f位置那么f之前的位置和主字符串肯定相等,并且abcab是对称的,我们就没必要i回退了,我们只需要将j回退到c位置再开始就是下一个比较的位置了。”next[i]是到i位置时i前面的字符串的特性,这里还可以写成到i位置时包括i字符串的特性。
2024-11-06 11:31:53
925
原创 map和set的封装用红黑树
迭代器。迭代器的作用——容器的类型有很多种但是不是每一个容器的取值方式都是一样的。比如说list是箭头->和解引用*的方式,string则是通过方括号的方式访问的。所以为了统一的访问这些容器所以我们就设置出了迭代器。统一用一种方式这里是,箭头->和解引用*的方式。迭代器里面就是存一个节点或一个数据的指针,通过一些运算符重载方式进行统一。所以我们可以理解迭代器成“指针”,但是迭代器本质还是一个类。我们用模版去实现。第一个参数T是RBNode中的唯一模版参数,传进来是为了在迭代器中有效储存数据。
2024-08-16 21:25:18
760
1
原创 AVL的代码剖析(c++)
AVL树是一棵二叉平衡搜索树。当向二叉搜索树中插入新的结点,如果能保证每个结点的左右子树高度之差的绝对值不超过1,那么此时就是二叉平衡搜索树。
2024-08-11 15:23:16
946
原创 什么是二叉搜索树,以及如何实现二叉搜索树的增删查代码
搜索二叉树是在二叉树的基础上构成的所以二叉树的节点是我们可以在此基础上进行优化。我们可以思考二叉树中的_data一定是为int类型的吗?不一定可能是char可能是其他,所以为了兼容性使得代码的更加全面。我们可以使用模版。为了方便维护我们借鉴list的思维,再创造一个类BSTree来存放BSTNode节点。将节点和树分开来。
2024-07-20 11:48:19
1081
原创 【c语言】【visual studio】使用malloc,calloc,realloc报错,来看看你是不是中招了。
引言:对于刚刚学习动态内存开辟的同学,在使用这些函数时难免不小心就犯错了,编译器报错时,也不知道错在哪儿,这篇文章将给你带来一些常见的不小心犯的错误。
2023-12-12 22:53:07
936
1
原创 【c语言】【visual studio】动态内存管理,malloc,calloc,realloc详解。
以上希望能够帮到你,让你对动态内存管理有跟深的理解。
2023-12-11 23:09:05
3778
3
原创 【c语言】【visual studio】带你一步一步轻松了解 int 类型以%f输出,char 类型以 %d输出,float类型以%d输出等等是如何输出的。
引言:看本文章之前,还需了解数据在内存中的是以二进制的补码存储的,以及整型和浮点型的存储方式的不同。(具体可看这篇博客)规则:数据存储拿取步骤(以x86环境为例)存a存储1.先都是32位二进制存储。——按存储规则存储。拿出2.看放置类型,若是char类型只拿低位8位,若是short 只拿低位16.放到类型中——看放置类型,拿取低位位数提升3.整型提升提升为32位。提升原则:看a的类型是什么,有符号高位添加符号位至32位,无符号高位添加0至32位。——看放置类型,整型提升打印。
2023-12-04 16:00:54
1078
5
原创 【c语言】【visual studio】带你了解浮点型和整型在内存中的储存方式。
引言:数据是计算机的基础,我相信了解数据在内存中的存储方式后,你会对计算机有一个更加深刻的理解。
2023-12-03 08:49:52
684
3
原创 【c语言】【visual studio】vs的常用调试小技巧
引言:每次当编译器报错时,有些小伙伴会摸不着头脑,不知道错误出在哪里,这里yanlou带你了解一些常见的调试技巧。
2023-11-28 22:59:32
970
原创 【c语言】【visual studio】库函数qsort的使用,以及qsort函数的自定义。
这里以一个整型数组为列 int arr[]={3,5,1,6,79,3,6,8,10};综上就是qsort函数的使用方式,以及如何实现自定义qsort函数。引言:qsort是c语言中自带的库函数,需要包括头文件。//注void* 类型的指针不能进行解引用操作。功能:实现任意数组的排序。
2023-11-27 07:00:00
1105
1
原创 【c语言】【visual studio】几道指针笔试题带你深入理解指针。
答案:解析:&a的类型是数组指针拿到的是整个地址,接着(int*)将数组指针强制类型转换成整型指针,用一个整型指针ptr来接收。&a+1,跳过的是整个数组的大小,即prt指向5后面的元素所以的意思是整型指针-1,整型指针-1,拿到的是5的地址,再一解引用得到5.接着单独的数组名是首元素的地址,所以a指向的是a[0]的地址,+1,指向a[1],拿到2的地址,再一解引用得到元素2.答案:解析:为什么都是加1,而结果不一样呢?这里我们只需要知道一点即可,c语言中的加减是根据类型来的。
2023-11-25 16:58:35
1306
7
原创 rand函数真的是随机的吗?
rand不算是真正的随机而是一种将已经随机的数的模板印刻下来的伪随机数。但是这里我们需要知道的是rand()括号中放的是“种子”,当没有输入值时,默认为1。我们只需要改变种子的数,就可以使rand“随机”起来。如何在c语言中实现输出随机数呢?我们只需调用rand函数就行,但关键来了,rand函数真的随机吗?可是问题又来了,我们要如何使种子随机起来,也就是改变起来呢?有人就会想到,我们人为的修改不就好了嘛。但是很遗憾是不行的,我们通过代码可以知道。时间戳每时每刻都在变我们就可以用此当作种子才实现种子的变化。
2023-11-12 14:32:10
549
3
原创 几分钟带你轻松搞定扫雷代码的原理与实现。
扫雷游戏代码· 憨色第一棒/112期比特 - 码云 - 开源中国 (gitee.com)1.写代码前总体框架。我们需要用代码实现的是棋盘的初始化,雷的布置,雷的排查,周围雷的显示,以及棋盘的打印等代码操作因此我们可以设置四个函数分别实现这些功能,此时我们注意到扫雷代码不包括主函数内容就有五个函数,代码量之多也可想而知,所以为了提高代码的可阅读性,我们创建三个文件game.h文件包括了我们所有我们调用函数的头文件,函数声明,以及我们的宏定义。(这里为什么要设置宏定义,我们后续慢慢道来)
2023-11-05 15:58:06
172
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人