redis中链表的数据结构定义如下:
// 链表中的节点
typedef struct listNode {
// 节点的前驱
struct listNode *prev;
// 节点的后继
struct listNode *next;
// 节点上保存的值
void *value;
} listNode;
typedef struct listIter {
listNode *next;
int direction;
} listIter;
// redis使用list来代表一个链表
typedef struct list {
// 链表头结点,head->prev为NULL
listNode *head;
// 链表为节点,tail->next为NULL
listNode *tail;
// 用于复制链表节点中保存的值
void *(*dup)(void *ptr);
// 用于释放链表节点保存的值
void (*free)(void *ptr);
// 用于对比链表节点所保存的值和另一个输入值是否相等
int (*match)(void *ptr, void *key);
unsigned long len;
} list;
如下图所示是redis中由一个list结构和三个listNode结构组成的链表:

本文介绍了Redis中链表数据结构的定义及其组成元素。包括链表节点的前后驱指针及保存的值,链表的头尾节点,以及用于操作链表节点值的函数指针。
1364

被折叠的 条评论
为什么被折叠?



