双端链表
链表节点(listNode)的结构
typedef struct listNode {
// 前置节点
struct listNode *prev;
// 后置节点
struct listNode *next;
// 节点的值
void *value;
}listNode
链表(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
图3-2展示的是一个由list结构和多个listNode结构组成的列表。
Redis链表特性
- 双端
- 无环
- 带表头指针和表尾指针
- 带链表长度计数器
- 多态