数据结构
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 · 1408 阅读 · 0 评论 -
树的四种遍历案例和AVL树的旋转的四种情况
树与二叉树一, 树的基本术语树中一个结点的子结点个数称为该结点的度, 树中结点的最大度数称为树的度。如结点B的度为2,结点D的度为3,树的度为3.度大于0的结点称为分支结点(又称非终端结点),度为0(没有子女结点)的结点称为叶子结点(又称终端结点)。在分支结点中,每个结点的分支数就是该结点的度。结点的深度,高度和层次。二, 树的性质树中的结点数等于所有结点的度数加1。度为m的...原创 2019-11-25 01:38:29 · 661 阅读 · 0 评论 -
创建链表(一)
一,创建链表结构带有头节点的链表/************************************************************************* > File Name: 111单链表.c > Author: songli > QQ: 2734030745 > Mail: 15850774503@163.com >原创 2017-08-24 22:21:38 · 632 阅读 · 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 · 1659 阅读 · 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 · 296 阅读 · 0 评论 -
二叉树(查询和删除)
一,插入数据二叉树的插入过程 数据结构typedef struct TreeNode { int data; struct TreeNode *leftchild; struct TreeNode *rightChild; struct TreeNode *parent;}TreeNode; 1, 第一步判断二叉树是否有根节点//判断根节点是否为空原创 2017-11-20 20:04:56 · 485 阅读 · 0 评论 -
无锁循环队列的应用
前言为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。这种循环队列可以以单链表的方式来在实际编程应用中来实现。正文一, 无锁循环队列的条件处理循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件m_h...原创 2018-12-22 10:48:14 · 1780 阅读 · 1 评论 -
redis源码分析之跳跃表
前言跳跃表数据结构可以 与平衡树和红黑树查询效率。 正常时间复杂度是O(logn), 最差时间复杂度是O(n)skiplist原理介绍这样所有新增加的指针连成了一个新的链表,但它包含的节点个数只有原来的一半(上图中是9, 45, 99)。现在当我们想查找数据的时候,可以先沿着这个新链表进行查找。当碰到比待查数据大的节点时,再回到原来的链表中进行查找。比如,我们想查找55,查找的路径是沿着下...原创 2019-04-15 00:05:03 · 300 阅读 · 0 评论