您的位置:首页 > 理论基础 > 数据结构算法

Redis-数据结构-链表-adlist.h/listNode

2017-08-27 00:24 701 查看
每个链表接点使用一个adlist.h/listNode结构表示:

typedef struce listNode {
//前置节点
struct listNode *prev;
//后置节点
struct listNode *next;
//节点的值
void *value;
}listNode;多个listNode可以通过prev和next指针组成双端链表。
使用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;
Redis的脸表实现特点可以总结:

1、双端:链表节点带有prev和next指针;

2、无环:表头节点的prev与表尾节点的next只想NULL;

3、带表头指针和表尾指针:list机构的head和tail指针;

4、带有链表长度计数器:len

5、多态:链表可以保存各种不同类型的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: