- 博客(79)
- 收藏
- 关注
原创 stack和queue
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操。
2024-03-05 22:39:04 1122
原创 List类
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。
2024-03-05 21:55:37 887
原创 vector类
1. vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。3.本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小 为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。
2024-02-22 22:10:52 941
原创 二叉树与堆
目录1.树概念及结构1.1树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构)2.二叉树概念及结构2.1概念2.2现实中的二叉树:2.3 特殊的二叉树:2.4 二叉树的性质2.5 二叉树的存储结构3.二叉树的顺序结构及实现3.1 二叉树的顺序结构3.2 堆的概念及结构3.3 堆的实现3.2.1 堆向下调整算法3.2.2堆的创建3.2.3 建堆时间复杂度3.2.4 堆的插入3.2.5 堆的删除3.2.6 堆的代码实现3.4 堆的应用3.4.1 堆排序3.4.2 TO
2024-02-22 20:24:08 1033 1
原创 C++模版初阶
如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。
2024-02-15 18:39:16 956
原创 string类
3. resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的元素空间。C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。
2024-02-15 18:39:00 866
原创 类与对象(中)
如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。
2024-01-31 15:39:07 679
原创 二叉树的OJ题——6.前序遍历
此题要保存节点,所以需要先获取节点个数,然后进行前序遍历,保存每一个节点值。//节点个数 = 左右子树节点个数 + 1。
2023-12-26 18:02:53 393
原创 二叉树OJ题——5.对称二叉树
判断一个树是否对称,首先要判断左右孩子是否对称相等,还需要判断左孩子的左子树是否和右孩子的右子树对称,左孩子的右子树是否和右孩子的左子树对称。
2023-12-26 17:58:47 374
原创 大小堆的实现
这段代码主要定义了一个堆的数据结构和相关操作。堆是一种特殊的树形数据结构,它满足堆的性质要求,通常被用于实现优先队列等数据结构。堆可以作为最大堆或最小堆来使用,这取决于如何对数据进行初始化。
2023-12-26 15:27:46 373
原创 栈和队列OJ题——15.循环队列
入队:首先要判断队列是否已满,再进行入队的操作,入队操作需要考虑索引循环的问题,当索引越界,需要让它变成最小值。出队:首先要判断队列是否为空,再进行出队操作,出队也需要考虑索引循环的问题。判满: 队尾 + 1 == 队头。通过一个定长数组实现循环队列。判空: 队头 == 队尾。
2023-12-03 23:10:12 297 1
原创 栈和队列的OJ题——14.用栈实现队列
出队操作: 当出队的栈不为空是,直接进行出栈操作,如果为空,需要把入队的栈元素全部导入到出队的栈,然后再进行出栈操作。此题可以用两个栈实现,一个栈进行入队操作,另一个栈进行出队操作。
2023-12-03 23:07:04 110
原创 栈和队列的OJ题--13.用队列实现栈
出栈操作相当于非空队列的队尾元素出队,此时需要把非空队列除最后一个元素之外的其余元素入队到空队列,然后出队最后一个队尾元素。解题思路: 此题可以用两个队列去实现一个栈,每次始终保持一个队列为空,入栈操作相当于给非空队列进行入队操作。
2023-12-03 23:03:39 112
原创 栈 和 队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈中的数据元素遵守后进先出LIFO)的原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。
2023-11-23 23:47:29 76
原创 栈和队列的OJ题--12.括号匹配
2. 右括号,与栈顶的左括号进行匹配,如果不匹配直接返回false。循环结束后,如果栈空则匹配,否则左括号比右括号多肯定不匹配。1. 左括号,直接入栈。
2023-11-23 23:32:40 61
原创 单链表OJ题——11.随机链表的复制
2.复制随机指针的链接:拷贝节点的随机指针指向被拷贝节点随机指针的下一个位置。1.拷贝链表的每一个节点,拷贝的节点先链接到被拷贝节点的后面。3.拆解链表,把拷贝的链表从原链表中拆解出来。
2023-11-22 09:10:53 106
原创 单链表OJ题——10.环形链表2
所以从相遇点开始slow继续走,让一个指针从头开始走,相遇点即为入口节点。fast所走的步数为:L + X + N * C。slow所走的步数为:L + X。即: L = N * C - X。
2023-11-22 09:08:51 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人