![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 76
轩轩曲觞阁
C/C++在学新人
展开
-
数据结构——图
在离散数学中,图(Graph)是用于表示物体与物体之间存在某种关系的结构。数学抽象后的“物体”称作节点或顶点(英語:Vertex,node或point),节点间的相关关系则称作边。在描绘一张图的时候,通常用一组点或小圆圈表示节点,其间的边则使用直线或曲线。原创 2024-06-27 10:38:29 · 921 阅读 · 0 评论 -
数据结构——并查集
在计算机科学中,并查集(英文:Disjoint-set data structure,直译为不数据结构交集)是一种数据结构,用于处理一些不交集(Disjoint sets,一系列没有重复元素的集合)的合并及查询问题。原创 2024-06-26 22:39:02 · 541 阅读 · 0 评论 -
数据结构——哈希
在顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(logN),搜索的效率取决于搜索过程中元素的比较次数。那么我们理想的搜索方法是:可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。当向该结构中:1. 插入元素。原创 2023-10-19 15:28:09 · 281 阅读 · 0 评论 -
C++库函数——set与map的模拟实现
对于上面这棵红黑树,我们可以很容易得知道begin()是红黑树的最左节点,end()应该是一个空节点。即接下来定义iterator及其具体操作。原创 2023-10-06 15:11:25 · 204 阅读 · 0 评论 -
数据结构——红黑树
/ 在这里为了方便表示我们先将颜色枚举// 在红黑树中只有黑与红,即BLACK与REDenum ColorBLACK,RED// 因为节点是公用的,因此设定为struct:_kv(kv)// 根据红黑树的性质可以知道// 要插入的新节点不应该是黑色的,而应该是红色的// 如果是黑色的那么就会影响它当前路径的黑色节点总数{}原创 2023-09-18 18:37:42 · 568 阅读 · 3 评论 -
数据结构——AVL树
/平衡因子因为在使用过程中可能会频繁使用到父节点,因此我们将其设计为三叉链,且在这里我们设计一个平衡因子(注:在AVL树中可能没有平衡因子,在这里引入平衡因子只是为了方便我们理解),规定一个初始节点的平衡因子为0,当它的左子树中出现新节点时平衡因子就--,右子树中出现新节点时平衡因子就++,当平衡因子==2或者==-2时,此时我们就认为当前节点往下的树已经失衡,需要对其作出调整(各式各样的旋转)原创 2023-09-15 15:03:59 · 502 阅读 · 0 评论 -
数据结构——树
的。随便举例一棵树,如注:树形结构中,子树之间不能有交集,否则就不是树形结构Ⅱ. 树中的相关概念我们以下面这个树为例。原创 2023-06-01 23:42:25 · 1032 阅读 · 4 评论 -
数据结构——循环队列
目录1.循环队列的基础结构2.循环队列的数据操作①判断循环队列是否为空②判断循环队列是否为满③创建循环队列④循环队列插入数据⑤循环队列弹出数据⑥取得队首元素⑦取得队尾元素⑧循环队列的销毁3.循环队列的优势与劣势①优势②劣势循环队列是一种基于数组实现的队列,具有头指针front和尾指针rear。front指向队头元素,rear指向队尾元素的下一个位置,这样空队列时,front == rear;而队列满时,(rear+1)%n == front,其中n为数组的大小,表示rear再循环一圈后到达队头位置。因此我们原创 2023-04-14 09:44:43 · 748 阅读 · 0 评论 -
数据结构——队列
队列的容量有限:队列的容量是有限的,即队列能够容纳的元素数量是有限的。队列的头部保存的是最先进入的元素,而队列的尾部保存的是最后进入的元素。队列的插入和删除操作的时间复杂度都为O(1),但在使用数组实现的队列中,插入和删除操作可能会导致元素的移动,造成额外的时间和空间开销。队列的数据存储必须是顺序的:队列只能在队列的头部删除元素,在队列的尾部添加元素,数据的存储必须是顺序的,不适合随机访问和修改数据。队列的检索操作效率较低:在使用数组实现的队列中,查找队列中某个元素的效率较低,需要遍历整个队列来查找。原创 2023-03-30 19:20:17 · 444 阅读 · 0 评论 -
数据结构——栈
因此我们可以得到栈的结构定义如下。原创 2023-03-28 17:04:40 · 117 阅读 · 0 评论 -
力扣日常刷题——(142环形链表Ⅱ、138复制带随机指针的链表)
方法1:将每一个节点复制使其处于本节点之后,下一个节点之前,复制完成之后,使每个复制节点的random指针指向前一个节点的random指针指向的节点的下一个节点,遍历一遍之后,将这些复制节点分别摘出,形成一个链表并返回。方法1:使用快慢指针先使慢指针追到快指针,之后分别使两指针从起始点和相遇点开始向后移动,最终会在入环点相遇(推导如下)原创 2023-03-23 21:25:12 · 84 阅读 · 0 评论 -
数据结构——双向带头循环链表
双向带头循环链表(Doubly Circular Linked List)是一种数据结构,它与普通链表类似,但是每个节点除了有指向下一个节点的指针外,还有指向前一个节点的指针,而且它的头节点指向尾节点,尾节点也指向头节点,形成了一个循环。因此,我们能得到它的基础结构为。原创 2023-03-17 20:47:19 · 81 阅读 · 1 评论 -
数据结构——单链表
单链表在创建前,我们需要知道,在单链表中我们需要插入数据,在插入数据之后还需要一个链表指针(用于指向下一数据的存储位置),因此我们便能得到单链表的结构如下。原创 2023-03-10 15:15:24 · 62 阅读 · 0 评论 -
数据结构——动态顺序表
顺序表在创建时,我们需要知道,在顺序表中我们要插入数据,在插入数据之后有当前的有效空间,因此我们便能得到顺序表的结构如下。原创 2023-03-06 21:47:29 · 63 阅读 · 2 评论