Redis数据结构学习-链表(二)

2020-04-24  本文已影响0人  牛牛_735d

链表

链表提供了高效的节点重排能力, 及顺序性节点访问方式, Redis构建了自己的链表实现

链表和链表节点的实现

typedef struct listNode{
  struct listNode *prev; // 前置节点
  struct listNode *next; // 后置节点
  void *value; // 节点值
}listNode;

多个listNode节点通过 prevnext指针组成双端链表, 虽然仅使用多个listNode就可以组成链表, 使用 adlist.h/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); 节点值对比函数
} list;

list结构为链表提供了表头指针head、表尾指针tail, 及链表长度计数器len, 而udp, free, match成员则用于实现多态链表所需特定函数.

Redis 链表实现特性总结
上一篇 下一篇

猜你喜欢

热点阅读