首页 > 其他分享 >数据结构-跳表

数据结构-跳表

时间:2023-03-25 22:24:36浏览次数:36  
标签:typedef struct zskiplistNode 链表 跳表 数据结构 节点

数据结构

/* ZSETs use a specialized version of Skiplists */
typedef struct zskiplistNode {
    sds ele;
    double score;
    struct zskiplistNode *backward;
    struct zskiplistLevel {
        struct zskiplistNode *forward;
        unsigned long span;
    } level[];
} zskiplistNode;
typedef struct zskiplist {
    struct zskiplistNode *header, *tail;
    unsigned long length;
    int level;
} zskiplist;
typedef struct zset {
    dict *dict;
    zskiplist *zsl;
} zset;
  • score:分值,用于排序。
  • backward:是第一层的前一个数据,即span=1。
  • level[]:每一个层所代表的节点node。
  • forward:该层级的下一个节点。
  • span:到达该层级的下一个节点,实际跨越了多少个节点,也是方便用于zrange等排行榜查询的用处。
有序链表只能逐一查找元素,导致操作起来非常缓慢,于是就出现了跳表。具体来说,跳表在链表的基础上,增加了多级索引,通过索引位置的几个跳转,实现数据的快速定位,如下图所示:

 跳表性质

  1. 由很多层组成
  2. 每一层都是一个有序链表
  3. 最底层的链表包含所有元素
  4. 如果一个元素出现在第i层的链表中,则它在i-1层中也会出现。
  5. 上层节点可以跳转到下层。
跳表的查找、插入复杂度就是 O(logN)。  

标签:typedef,struct,zskiplistNode,链表,跳表,数据结构,节点
From: https://www.cnblogs.com/zhengbiyu/p/17255759.html

相关文章

  • 数据结构(第二章)
    数据结构(第二章)一、线性表概念:线性表是具有相同数据类型的n(n>0)个数据元素的有序数列。第一个元素没有直接前驱,最后一个元素没有直接后继。表中元素的个数有限表中......
  • 数据结构-哈希表
     哈希表hashtable数据结构dictht是hashtable的数据结构,dictEntry是每个entry元素的数据结构。typedefstructdictht{//指针数组,这个hash的桶dictEntry*......
  • 数据结构与算法-目录
    数组头文件定义:链接初始化数组、清空销毁数组结构:链接输入元素创建数组、打印数组:链接数组扩容:链接在数组尾部追加元素:链接插入元素:链接删除元素:链接删除元素X:链接......
  • 数据结构-->单链表OJ题--->讲解_02
    老铁们,本期讲解反转单链表双指针法代码如下所示:>现在附上测试环节:>以及最终实现的图样链表,如下:另外,别忘了对“Reverse_SLT”反转函数于头文件中声明!!这就是采用双指针......
  • 数据结构-->单链表OJ题--->讲解_01
    老铁们,本期我们开讲单链表OJ题的讲解:删除单链表中给定的val值,并将剩余的链表进行链接本题中val的值是11,删除后的图示链接为:>显然,我们需要指针cur移动来寻找指定数值val......
  • 数据结构合集
    链表链表是一种本身并不常用的数据结构。然而其衍生出的许多数据结构如块状链表和链式前项星等却十分甚至九分的常用。链表简介顾名思义,链表就是使用链连接在一起的数......
  • LevelDb-基本数据结构
    目录SliceArenaskiplist跳表本质时空复杂度插入,删除数据(如何维护索引)极端情况分析:不维护索引极端情况分析:每次插入都维护插入效率和查找效率取舍删除对比红黑树的优势leve......
  • 【数据结构】数组与广义表 - 笔记
    数组与广义表的一章相对更为简单,第1,2节都是很熟悉的数组相关定义、实现等。因此这篇博客的讲述重点放在第3节“特殊矩阵的压缩存储”中的“稀疏矩阵”的存储以及第4节“......
  • 数据结构笔记1 绪论 概念
    最近这一段时间在学习数据结构。感觉还是很值得的。有老大的话说就是这次投资成功了。开始决定学习的时候买了一本书《数据结构(C语言版)》相信大家都看过吧。是严蔚敏老师......
  • 数据结构笔记4 栈
    栈的定义和概念栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。(2)当表中没有元素......