数据结构
文章平均质量分 71
菜鸡爱玩
通信工程 小趴菜
展开
-
哈希桶——开放定址法
迭代器中_node是实现 operator*(),operator->(),operator!=().每一次桶的位置 operator++()会运用到进行节点的遍历 记录每次桶的位置方便遍历哈希表获取哈希桶的数据参数,获取哈希表的成员数据,成员函数等,我个人认为这个成员很方便也很重要。原创 2023-11-30 11:23:40 · 164 阅读 · 0 评论 -
位图的详细讲解
位运算操作符:或,与,异或,按位取反。原创 2023-11-25 12:10:05 · 127 阅读 · 0 评论 -
红黑树,AVLTree树(平衡二叉树)迭代器原理讲解
end()),是不等于end节点,所以在遍历完右子树后就像上返回找类似于下图中绿色的parent节点了(右子树遍历完向上找),所以遍历完整颗二叉树后,就会向上找节点,到了父节点的父亲时就为空了,也就是end节点,所以就停止遍历了。简单叙述以下,二叉树上面迭代器的运行逻辑,根据下面的图,迭代器的begin就是二叉树的最左节点,end是二叉树根节点的父节点(NULL)。为什么要这样设计,因为平衡二叉树在中序遍历下是升序排列,所以只有首部begin在二叉树最左节点,向后++遍历时,才能打印有序数据。原创 2023-11-12 18:37:45 · 111 阅读 · 0 评论 -
红黑树——原理刨析
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的,所以不是平衡二叉树。如上图,就是红黑树。原创 2023-11-06 13:10:49 · 199 阅读 · 2 评论 -
优先级队列priority_queue
1. 优先队列是一种容器适配器,根据严格的弱排序标准它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4. 底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。原创 2023-10-31 19:40:49 · 76 阅读 · 0 评论 -
AVLTree代码刨析
AVLTree是高度平衡二叉树每一个节点的左右子树高度差都小于2,这是AVLTree高度平衡的由来,他是在平衡二叉树的基础上进行特殊的处理(旋转:如果该节点不满足高度平衡二叉树的特点就进行旋转旋转目的是为了调整该节点左右子树高度差 促使其达到高度平衡二叉树AVLTree节点之间是通过三叉链(里面存有三个节点:)进行链接的 这样做为了更好的用迭代器去遍历二叉树AVLTree缺点也很明显,旋转次数太多,但红黑树旋转就较少,所以AVLTree树的建立较耗时间,红黑树肯会更优。原创 2023-10-08 14:21:37 · 81 阅读 · 0 评论 -
热门排序各个版本代码 递归非递归都有 纯代码
纯代码 思维逻辑还是比较清楚 快排 归并 希尔 都是之前讲解的 如有不懂 我会解释原创 2023-08-02 13:09:58 · 88 阅读 · 0 评论 -
单链表C语言实现 (不带头 带头两个版本)
不带头和带头的 当链表有数据时 尾部插入和头部插入是一样的流程 用一个临时变量tmp 向后寻找pos位置 再将该位置的下一个节点的地址给 要插入节点的指针 最后将要插入节点的地址给前一个节点的指针 这样就将该节点插进去了。链表的插入会向内存申请空间 去创造一个新的节点 所以后续的 头部插入 尾部插入 还是任意位置的插入 都会进行相同的操作 所以这里将开辟节点这个过程单独分装为一个函数 方便后面的操作。对链表的查找 修改 其实就是将链表遍历一遍 上面的寻找尾部 打印链表就是遍历链表 所以大家可以将其修改修改。原创 2023-04-21 14:47:23 · 205 阅读 · 2 评论