当前位置: 首页 > news >正文

跳表实现学习

1.介绍

2.源码

跳表节点:

/* ZSETs use a specialized version of Skiplists */
/**
 * @brief 定义跳跃表节点的数据结构。
 * 
 * 该结构体用于表示跳跃表中的一个节点,包含元素、分数、后向指针和多层链表信息。
 */
typedef struct zskiplistNode {
    sds ele;           /* 存储节点代表的元素,通常是有序集合中的成员名称。 */
    double score;      /* 存储元素对应的分数,用于节点排序。 */
    struct zskiplistNode *backward; /* 指向前一个节点的指针,用于双向遍历。 */
    /**
     * @brief 定义跳跃表的每一层。
     * 
     * 该结构体表示跳跃表的一层,包含指向下一个节点的指针和跨越的节点数。
     */
    struct zskiplistLevel {
        struct zskiplistNode *forward; /* 指向下一个节点的指针,用于在当前层中向前遍历。 */
        unsigned long span;            /* 表示从当前节点到 forward 指针所指向的节点之间跨越的节点数。 */
    } level[]; /* 柔性数组,存储跳跃表的每一层信息。 */
} zskiplistNode;

跳表:

typedef struct zskiplist {
    struct zskiplistNode *header, *tail;
    unsigned long length;
    int level;
} zskiplist;

zset存储结构:

typedef struct zset {
    dict *dict;
    zskiplist *zsl;
} zset;

相关文章:

  • Linux远程工具SecureCRT下载安装和使用
  • Python文件,模块
  • ​【C++设计模式】第二十三篇:观察者模式(Observer)
  • HOT100系列——(普通数组+矩阵)
  • DB-GPT-0.7版本win11安装,最新版本,安装方式变更了
  • ELK traceId 通过A服务调用B服务举例
  • 『MaxKB』MaxKB源码在Docker环境的部署实战
  • 第27周JavaSpringboot电商进阶开发 2.常用功能进阶
  • 要登录的设备ip未知时的处理方法
  • WPF-DataGrid的增删查改
  • 【MapSet】哈希表
  • 麒麟操作系统和统信的区别,上面一般用什么OFFICE,excel软件?
  • Java 什么是线程安全及如何实现线程安全
  • EasyRTC嵌入式音视频通话SDK:基于纯C语言的跨平台实时通信系统设计与实践
  • leetcode144 二叉树的前序遍历 递归法、迭代法
  • 一维数组的增删改查:对元素的影响
  • 解决pip安装uv时下载速度慢
  • 【嵌入式linux】网口和USB热插拔检测
  • qt之No executable specified
  • 【ES6】基础特性总结
  • 宫崎骏的折返点
  • 经济日报:人工智能开启太空经济新格局
  • 外企聊营商|上海仲裁:化解跨国企业纠纷的“上海路径”
  • 联合国:欢迎俄乌伊斯坦布尔会谈,希望实现全面停火
  • 张巍任中共河南省委副书记
  • 商务部召开全国离境退税工作推进会:提高退税商店覆盖面,扩大入境消费