数据结构
文章平均质量分 83
C++下等马
这个作者很懒,什么都没留下…
展开
-
哈希表&&哈希桶(C++实现)
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,。顺序查找时间复杂度为O(N),平衡树中为树的高度,即 O(log2N),搜索的效率取决于搜索过程中元素的比较次数。。如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立 一一映射的关系,那么在查找时通过该函数可以很快找到该元素。该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为哈希(散列)函数,构造出来的结构称 为哈希表(Hash Table)(或者称散列表)。原创 2024-02-16 19:16:00 · 776 阅读 · 0 评论 -
红黑树(RBTree)
结点直接定义为K,V模型,enum ColorRED,BLACK//存储键值对//使用枚举值定义结点的颜色,_kv(kv){}这里再结点定义的时候,默认颜色初始化为红色。也就是说,当插入一个新节点时,默认是红色的。这是为什么?如果新插入结点是黑色的,那么一定会破坏规则4,插入新结点的这条路径黑色结点个数就会比其他路径多一个。这时就需要对红黑树进行调整。如果插入结点是红色的,如果父结点是红色的,就会出现连续红色结点破坏了规则3。原创 2024-02-04 20:12:48 · 1065 阅读 · 0 评论 -
AVL树
这里直接实现KV模型的AVL树。用pair键值对作为树的元素值。为了后续实现更简单将AVL树定义为三叉链的结构(左子树,右子树,父结点)。并且在结点中引入平衡因子。//结点的左子树//结点的右子树//结点的父结点pair<K,V> _kv//结点元素(用键值对进行存储)int _bf;//结点的平衡因子,_kv(kv),_bf(0){}原创 2024-02-02 20:58:11 · 568 阅读 · 3 评论 -
二叉搜索树(BSTree)
可以将上面的第1种和第2、3种情况合并一下,删除节点是可以划分为三种情况。原创 2024-01-26 21:07:39 · 1115 阅读 · 0 评论 -
数据结构--->单链表
链表是一种物理结构(储存结构)上不一定连续,不一定是顺序的存储结构,数据元素是通过链表中的指针链接次序实现的。原创 2023-11-27 21:43:59 · 1264 阅读 · 0 评论 -
数据结构---顺序表
静态顺序表只适合确定需要存储多少数据的场景,如果存储数据量不确定的话,空间开太大浪费,开太小不够用。一般都会去使用动态顺序表,根据情况分配多大的空间。顺序表是用一段物理地址连续的存储单元存储元素的线性结构,一般采用数组进行存储。和尾插一样,要考虑是否有空间,但是与尾插不同的地方在于,需要挪动数据进行插入。1.存储空间的地址,需要一段空间来维护顺序表,需要知道顺序表的起始地址。头删和尾删一样,先判空。有了在指定位置插入和删除前提下,头插,头删,尾插,尾删新写法。2.顺序表的元素个数,记录顺序表的元素个数,原创 2023-11-27 21:43:12 · 893 阅读 · 0 评论 -
数据结构---队列
Qnode;int size;//记录元素个数}Queue;原创 2023-09-29 23:12:58 · 190 阅读 · 12 评论 -
数据结构---栈
栈就类似弹夹中的子弹一样先进去,却要后出来,而最后一个进弹夹的子弹却是第一个被射出来的栈只允许在一端进行操作 一端称为栈顶 另一端成为栈底不含任何数据元素的栈称为空栈。栈又称为先进后出的线性表栈的插入操作叫做进栈/压栈/入栈栈的删除操作叫做出栈/弹栈 如上图所示接下来就定义一个栈的结构int top;//栈顶//容量}stack;原创 2023-09-24 23:11:33 · 222 阅读 · 10 评论 -
数据结构---二叉树--堆
在之前学过的数据结构都是一对一的线性结构 但是在现实中,还有很多一对多的情况需要处理。这种一对多的数据结构就叫做“树”原创 2023-09-20 16:51:03 · 142 阅读 · 11 评论 -
数据结构---带头双向循环链表
什么是双向带头循环链表?上面简单的一个非空带头循环双向链表逻辑图如何定义一个双向链表?根据图和代码可以看双向链表就是单链表的每个结点中,在设置一个指向前驱节点的指针。原创 2023-09-12 10:33:25 · 1021 阅读 · 8 评论