- 博客(5)
- 收藏
- 关注
原创 memcpy和memmove的底层实现方式及其比较
这个时候从正向拷贝(因为反向拷贝的时候cpu在读取的时候会浪费算力)。这个时候拷贝就需要从后往前进行拷贝,防止拷贝后文件被覆盖。两者的差异:memcpy不考虑内存重叠问题,memmove考虑。首先,进入函数内部需要先强制类型转换一下两个地址,转换为char* 便于后续进行逐字节拷贝。函数的参数有三个,第一个是目标位置,第二个是原位置,第三个参数是拷贝内存的大小。这里分三种情况,1.需要拷贝的地址在原来文件的范围内,并且新文件在右侧。首先,确定函数的返回值为void(为了适配所有的内存类型)
2025-04-23 20:20:13
232
原创 搜索二叉树的递归实现及其应用
当然搜索二叉树不仅仅可以存放一个变量,还可以存放一个键,一个值,这样可以实现键值对的一一对应,以便于查找元素,只需要在结构体里面加上一个val就可以实现,当然还需要注意在插入元素的时候,不仅仅需要插入键,还需要插入值。还有用来检索一篇文章当中是否有拼写错误,方法就是,使用搜索二叉树把字典库存放起来,把每个单词提取出来,使用树包含的方法find进行检索,这个时间复杂度还是非常可观的。key_val模式,比如说,中英文字典的,key用来存放单词,val存放他的单词释义。在后续插入元素的时候再对其赋值。
2025-04-06 15:00:39
1187
原创 搜索二叉树BST
剩下一种情况就是当前节点的左右子树都存在的时候该怎么删,左右子树的节点都存在,先用while循环找到可以替代当前节点的那个节点,然后利用那个节点替换掉当前需要删除的节点,替换之后删掉那个替换之后的位置,(这里不能复用erase删除,因为交换之后会发现树的结构是乱掉的,需要手动去删除元素)当查找的数据比当前的节点值大的时候,就去当前节点的右子树进行查找,小的时候去左子树进行查找,当查找到下一个节点为空的时候表示找不到,返回false。删除数据包括删除没有子树的节点,有一个子树的节点,还有有两个子树的节点。
2025-04-04 14:24:04
1708
原创 c++贪吃蛇游戏代码
移动蛇的时候需要先把下一个位置的坐标计算出来,利用蛇的方向进行计算,比如说蛇下一步需要向上走,那么下一个节点是当前蛇头的y坐标-1,因为向上y坐标减少。由于蛇需要不停的移动,所以使用一个while进行蛇的持续移动,打破while的条件是蛇的状态不等于OK,因为当蛇的状态不等于OK的时候,蛇就死亡了。这个函数会在后续大量使用。修改完状态就是移动蛇了,在移动蛇的时候需要先判断一下,蛇移动的位置是不是食物,因为有食物和没有食物蛇的移动方式不相同,在蛇的类里面有一个蛇的方向,主要是依靠这个进行蛇的移动。
2025-04-01 19:51:35
2291
原创 简单的猜数字
首先是欢迎界面,没有什么含金量,不过想做个视觉上感受很好的话,可以利用光标定位,把欢迎界面还有提示操作打印在固定位置,这样可以保持页面的整洁,不至于随着操作黑框框里面的东西越堆越多。随机数的生成:当然是使用rand函数,用来生成随机数,例如生成1-100的数字可以rand()%100。输入一个数就没什么可以说的了,用一个变量进行存放一下,另外可以验证一下数据输入的是否有效,无效数据可以重新输入。哈哈哈哈,如你所见,这是我第一次写博客,所以我先从一个最简单的写起吧,心血来潮,写个猜数字的博客吧。
2025-03-29 21:57:21
280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅