微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis的底层数据结构-链表

链表定义:

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

通过多个 listNode 结构就可以组成链表,这是一个双向链表,Redis还提供了操作链表的数据结构:

typedef struct list{
     //表头节点
     listNode *head;
     //表尾节点
     listNode *tail;
     //链表所包含的节点数量
     unsigned long len;
     //节点值复制函数
     void (*free) (void *ptr);
     //节点值释放函数
     void (*free) (void *ptr);
     //节点值对比函数
     int (*match) (void *ptr,void *key);
}list;

 

  Redis链表特性:

  ①、双端:链表具有前置节点和后置节点的引用,获取这两个节点时间复杂度都为O(1)。

  ②、无环:表头节点的prev指针和表尾节点的next指针都指向 NULL,对链表的访问都是以 NULL 结束。  

  ③、带链表长度计数器:通过 len 属性获取链表长度的时间复杂度为 O(1)。

  ④、多态:链表节点使用 void* 指针来保存节点值,可以保存各种不同类型的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐