Redis 数据结构---链表

Redis的list底层实现使用的不是数组而是链表的数据结构 叫listnode  是一个双向链表

ListNode{

Struct listNode *prev  //前置节点

Struct listNode *next  //后置节点

Void *value

}

而redis的list正是使用listNode实现

Typedef struct list{

listNode *head  // 头结点

listNode *tail  // 尾节点

unsigned long len  //list长度

void *(*dup) (void *ptr)  //指针 指向 节点复制函数

void *(*free) (void *ptr)  //指针,指向节点释放函数

void *(*match) (void *ptr,void *key) // 指针,指向节点值比对函数

}

如果确定了list中的某一节点,查询其前后置节点可以直接查询pre next,时间复杂度仅为O(1)

List中head.prev=null, tail.next=null 前后为空,简称无环结构

List有api可直接获取head tail  listFist和 listLast

List长度函数时间复杂度为O(1),因为有len属性

因为dup free match三个属性可为list设置不同类型的特定函数,所以链表可以用以存储不同的数据接口,只要三属性对应的函数指针正确

最新文章

  1. 详解Java 8中Stream类型的“懒”加载
  2. java web filter 学习(2)
  3. Hong Kong Regional Online Preliminary 2016 C. Classrooms
  4. UVALive 6264 Conservation --拓扑排序
  5. Oracle----dual
  6. 关于jdbc注冊驱动的那点事
  7. 证明 poj 1014 模优化修剪,部分递归 有错误
  8. JSP include HTML出现乱码 问题解决
  9. HttpClient读取数据乱码的解决方案
  10. apollo1.7.1初探(二)使用apollo订阅主题,发布主题消息
  11. Go 初体验 - 闭包,数组,切片,锁
  12. nginx配置反向代理和负载均衡
  13. java求解第N个素数(质数)
  14. 网络编程基础【day10】:操作系统介绍
  15. 安装httpd服务
  16. Android平台MediaCodec避坑指北
  17. bzoj 1095 Hide 捉迷藏 - 动态点分治 -堆
  18. HTML/HTML5
  19. Kylin性能调优记——业务技术两手抓
  20. 转发---[沧海拾遗]java并发之CountDownLatch、Semaphore和CyclicBarrier

热门文章

  1. ar是System Activity Reporter(系统活动情况报告)的缩写。这
  2. # useradd -u 700 -g users vbird2
  3. shell应用之cobbler批量部署
  4. JDK、JRE 和 JVM 的区别
  5. LTC4020
  6. 8.4 parted:磁盘分区工具
  7. Jmeter+Ant+Jenkins接口自动化框架
  8. Python发送SMTP邮件指南
  9. SQL SERVER常用语法记录
  10. @RequestParam(required = true),@RequestParam(required = true)