
数据结构
chen_song_
人终将被年少不可得之物质而困其一生
展开
-
数据结构之B树和B+树基本概念
前言 正文 一, B树 1, B树的基本性质 B树,又称多路平衡查找树,B树中所有结点的孩子结点数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树,或为满足如下特性的m叉树; 树中每个结点至多有m颗子树(即至多含有m-1个关键字)。 若根结点不是终端结点,则至少有两颗子树。 除根结点外的所有非叶结点至少有[m/2]颗子树(即至少含有[m/2] - 1个关键字)。 2, B树的高度(磁盘...原创 2020-01-03 04:03:51 · 1464 阅读 · 0 评论 -
树的四种遍历案例和AVL树的旋转的四种情况
树与二叉树 一, 树的基本术语 树中一个结点的子结点个数称为该结点的度, 树中结点的最大度数称为树的度。如结点B的度为2,结点D的度为3,树的度为3. 度大于0的结点称为分支结点(又称非终端结点),度为0(没有子女结点)的结点称为叶子结点(又称终端结点)。在分支结点中,每个结点的分支数就是该结点的度。 结点的深度,高度和层次。 二, 树的性质 树中的结点数等于所有结点的度数加1。 度为m的...原创 2019-11-25 01:38:29 · 717 阅读 · 0 评论 -
创建链表(一)
一,创建链表结构带有头节点的链表/************************************************************************* > File Name: 111单链表.c > Author: songli > QQ: 2734030745 > Mail: 15850774503@163.com >原创 2017-08-24 22:21:38 · 646 阅读 · 0 评论 -
企业级的使用链表
一,企业级链表的设计数据结构的设计//链接链表的指针 struct LinedNode { struct LinedNode* next; } LinedNode;//保存链表的信息 struct LList { struct LinedNode toppoter; int m_size; }LList;typedef void* ListNode; 1,链表的初始化List原创 2017-09-05 22:21:03 · 1702 阅读 · 2 评论 -
数据结构
一,算法的大O表示法(时间复杂度,空间复杂度 是从内存的计算的)1,算法效率严重依赖于操作(operation)数量2,在判断时首先关注操作数量的最高次项3,操作数量的估值可以作为时间复杂度的估算2n + 3 O(n) 线性阶 3n^2 + 2n + 1 O(n^2) 平方阶 5log2n + 20原创 2017-09-17 23:10:59 · 323 阅读 · 0 评论 -
二叉树(查询和删除)
一,插入数据二叉树的插入过程 数据结构typedef struct TreeNode { int data; struct TreeNode *leftchild; struct TreeNode *rightChild; struct TreeNode *parent; }TreeNode; 1, 第一步判断二叉树是否有根节点 //判断根节点是否为空原创 2017-11-20 20:04:56 · 519 阅读 · 0 评论 -
无锁循环队列的应用
前言 为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。这种循环队列可以以单链表的方式来在实际编程应用中来实现。 正文 一, 无锁循环队列的条件处理 循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。 因此,无法通过条件m_h...原创 2018-12-22 10:48:14 · 1833 阅读 · 1 评论 -
redis源码分析之跳跃表
前言 跳跃表数据结构可以 与平衡树和红黑树查询效率。 正常时间复杂度是O(logn), 最差时间复杂度是O(n) skiplist原理介绍 这样所有新增加的指针连成了一个新的链表,但它包含的节点个数只有原来的一半(上图中是9, 45, 99)。现在当我们想查找数据的时候,可以先沿着这个新链表进行查找。当碰到比待查数据大的节点时,再回到原来的链表中进行查找。比如,我们想查找55,查找的路径是沿着下...原创 2019-04-15 00:05:03 · 328 阅读 · 0 评论