- 博客(40)
- 收藏
- 关注
原创 二叉树的分层遍历、栈的压入弹出序列
本章主要来讲解两个OJ题,针对每个OJ题我分三部分来解决,分别是题目解析(主要弄清楚题目要求我们解决什么问题),算法原理,代码编写,接下来让我们进入正题。
2024-08-24 16:25:41 433 37
原创 迭代器失效
会引起其底层空间改变的操作,都有可能是迭代器失效,比如:resize、reserve、insert、assign、push_back等对象在扩容后迭代器还指向原空间,而原空间已经被弃用(内存已释放),再使用迭代器的话程序就会崩溃。
2024-08-19 18:13:40 578 58
原创 string模拟
string本质可以理解为储存char类型的顺序表,其中string的迭代器用一个char*就可以解决。所以string类成员变量如下:这里用了一个命名空间是为了区分库里面的string。接下来就对需要实现的函数一一讲解。
2024-08-17 12:01:22 945 65
原创 模板初阶(详解)
这样每个类型交换都需要写一个函数重载,其中代码的重复率很高,只有类型不同而逻辑都一样,写起来也非常的繁琐,那我们能不能写一个通用的函数告诉编译器一个模版让编译器根据不同的类型利用该模版来生成代码呢?这就是本章的主题——模板。编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。模板分为函数模板和类模板,接下来我们分别来详细学习。
2024-08-11 17:02:08 2369 92
原创 类和对象(下)
我们不写,编译器默认⽣成的构造,对内置类型成员变量的初始化没有要求,也就是说是否初始化是不确定的,看编译器。主要是完成清理工作,这个函数会在对象的主调函数结束的时候编译器会自动调用释放内存,一般这个函数都不需要自己写编译器会默认生成,对于动态申请的内存空间还需我们手动写一个析构函数去进行内存的释放。1.初始化列表是每个成员变量定义的地方,在每定义一个对象的时候都会走一遍初始化列表,而初始化列表是编译器默认生成的,当然也可以自己写一个来替代作初始化的构造函数。可以理解为你是我的朋友,我的私有可以给你用。
2024-08-04 11:53:54 1181 76
原创 【排序算法】—— 计数排序
计数排序,顾名思义就是记录数据出现的次数进行排序,空间复杂度为O(N)。只能用于整型,对于比较集中重复率比较高数据更为适用。
2024-07-18 19:13:00 1360 65
原创 【排序算法】—— 快速排序
快速排序,霍尔法,挖坑法,前后指针法,小区间优化,三数取中,快速排序非递归,快速排序递归,快速排序的优化,快速排序提高效率的方法
2024-07-07 22:43:39 2885 72
原创 【排序算法】—— 希尔排序
希尔排序是简单插入排序的一种升级版,它也是用了插入的思想,而插入排序相比冒泡排序和选择排序的效率要高的多,再将它优化为希尔排序后效率跟原来根本就不在一个级别。接下来我们就一起来学习一下希尔排序。
2024-06-25 09:24:27 1321 87
原创 二叉树(详解)
二叉树,完全二叉树,堆,满二叉树,树形结构,父子结点下标计算,树的储存现实中的二叉树,堆的计算,二叉树的储存,父结点,子结点
2024-05-23 09:55:46 1583 158
原创 栈和队列OJ题
如果要用队列实现栈的话,使用一个队列是肯定不行的,队列结构是先进先出,栈结构是先进后出,所以我们要做的就是使用两个队列实现元素的先进后出的功能,要实现出栈操作我们只要,把左边栈的元素逐个导入右边队列中,直到剩下最后一个,再将它取出相当于出队操作。End和Head指向同一位置的时候栈为空的情况,比如原来队列需要的是k个空间,那么我们可以创建k+1个空间,那么我们就可以。用栈实现队列也就是使用栈来实现先进先出的效果,该操作用一个栈是无法完成的,我们考虑用两个栈,栈a用来模拟入队操作,栈b来模拟出队操作。
2024-05-20 10:03:58 867 77
原创 队列(详解)
队列(Queue)是一种常见的数据结构,它按照先进先出的原则管理数据。这意味着最先进入队列的元素将被最先移出队列,类似于现实生活中排队的场景。在队列中,数据项被添加到队列的一端,称为队尾,而从队列中移除数据项的操作则发生在另一端,称为队首。新元素被添加到队列的尾部,并且从队列中移除元素时,总是从队列的头部开始。队列常用于需要按顺序处理数据的场景,比如任务调度、缓冲等。
2024-05-12 21:52:31 1102 101
原创 链表经典面试题
反转链表,回文链表,相交链表,环形链表,带环链表,合并两个有序链表,双指针,快慢指针,面试题,栈空间,追击问题,中间节点的查找,暴力算法,结构体指针数组,数据结构,OJ题
2024-05-06 11:51:01 3171 203
原创 贪吃蛇小游戏(1)
游戏 获取按键状态 控制台坐标 宽字符 本地化 睡眠 光标的隐藏 随机数 柄 动态效果 双线程 锁 有趣的小游戏 c语言小游戏 控制台窗口设置 贪吃蛇双人模式 坐标设置
2024-04-29 10:05:14 3472 215
原创 控制台程序设置
控制台程序设置 光标设置 柄的获取 获取按键情况 坐标设置 COORD GetStdHandleCONSOLE_CURSOR_INFO GetConsoleCursorInfo SetConsoleCursorInfoGetAsyncKeyState 本地化 setlocale函数
2024-04-22 12:07:32 4126 170
原创 链表创建的陷阱与细节
链表 c语言 java c++ 数据结构 链表传参问题 优先级 二级指针传参 链表的结点前驱丢失问题 链表的缺陷 指针做参数的目的 头插 尾插 链表的增删查该
2024-04-15 10:06:32 1434 130
原创 顺序表(详解)
线性表是指在逻辑结构上是线性的,线性表有静态顺序表,动态顺序表,单链表,双链表等。而顺序表就相当于数组,它的储存结构和数组相同,在逻辑结构和物理结构上都是线性的。静态顺序表就是一个数组,它的大小是在定义的时候就决定好的,不可在程序运行后改变,具有局限性。动态顺序表的内存是需要动态开辟的需要用到动态开辟函数,而通过realloc函数可以对它的内存根据需要调节,比较灵活,现在我们主要来学习一下动态顺序表。int size;//记录arr数组中已储存元素的个数}SL;
2024-04-08 11:45:00 845 78
原创 <string.h>中的函数原理及使用
strcpy strstr strncpy strcat memcpy memset memcmp
2024-03-19 21:16:03 1084 25
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人