美文网首页
第 3 章 链表

第 3 章 链表

作者: MatyLine | 来源:发表于2021-03-27 12:35 被阅读0次

    listNode

    typedef struct listNode{
      struct listNode *prev;
      struct listNode *next;
      void *value;
    }listNode;
    

    void 指针可以指向任意类型的数据,如:

    void main(){
      int num = 100;
      void *p = #
      printf("%d",*(int *)p);
    }
    

    可见,Redis 中的链接采用了双端链表。

    list

    typedef struct list{
      listNode *head;
      listNode *tail;
      unsigned long len;
      void *(*dup) (void *ptr);
      void (*free) (void *ptr);
      int (*match) (void *ptr, void *key);
    }
    

    Redis 的链表实现特性:

    • 双端:获取某节点的前、后置节点的复杂度为 O(1).
    • 无环
    • 多态:链表节点使用 void* 指针来保存节点值,并且可以通过 list 结构的 dupfreematch 三个属性为节点值设置类型特定函数,所以链表可以用于保存各种不同类型的值。
      链表被广泛用于实现 Redis 的各种功能,比如列表键、发布与订阅、慢查询、监视器等。

    相关文章

      网友评论

          本文标题:第 3 章 链表

          本文链接:https://www.haomeiwen.com/subject/deokhltx.html