当前位置: 首页 > 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;

http://www.dtcms.com/a/64167.html

相关文章:

  • 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】基础特性总结
  • 通义万相 2.1:AIGC 领域的 “王炸” 组合如何颠覆创作生态?
  • TDengine 使用教程:从入门到实践
  • Android控件Selector封装优化指南:高效实现动态UI效果
  • LLM训练中常用的Benchmarks
  • uvm_transaction, uvm_seq_item, uvm_object, uvm_component的关系
  • 仅仅使用pytorch来手撕transformer架构(3):编码器模块和编码器类的实现和向前传播
  • 前端高阶面试题·每日一题
  • 【大模型知识点】RMSNorm(Root Mean Square Normalization)均方根归一化
  • linux 命令 ls
  • AI模型的构建过程是怎样的(下)