码迷,mamicode.com
首页 > 其他好文 > 详细

redis数据结构存储Linked List设计细节(redis的设计与实现笔记)

时间:2016-12-11 12:18:57      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:释放   free   typedef   long   sig   bsp   遍历   时间复杂度   tail   

redis里拥有一个灵活扩展且获取表头表尾复杂度为O(1)的双端列表,分为list和listNode2部分组成。

list:

1 typedef struct list {//链表  
2     listNode *head;//链表头  
3     listNode *tail;//链表尾  
4     void *(*dup)(void *ptr); //复制函数指针  
5     void (*free)(void *ptr); //释放内存函数指针  
6     int (*match)(void *ptr, void *key); //比较函数指针  
7     unsigned long len; //链表长度  
8 } list; 

 listNode:

1 typedef struct listNode {  
2     struct listNode *prev;//前驱指针  
3     struct listNode *next;//后继指针  
4     void *value; //节点的值  
5 } listNode;  

 以下是双向链表的实现原理:

技术分享

 

list结构存在的意义:
1.获取首元素和尾元素的时间复杂度为O(1),且可以选择向后或向前遍历链表元素
2.获取元素数量时间复杂度为0(1),无需遍历即可快速取出元素数量

 

redis数据结构存储Linked List设计细节(redis的设计与实现笔记)

标签:释放   free   typedef   long   sig   bsp   遍历   时间复杂度   tail   

原文地址:http://www.cnblogs.com/QDSBK/p/6159127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!