使用场景:1. 列表键 2.发布与订阅 3.慢查询 4.监视器 5.保存客户端状态信息 6.构建客户端输出缓存区 output buffer
链表和链表节点的实现
链表节点
adlist.h/listNode
typedef struct listNode {
//前置节点
struct listNode *prev;
//后置节点
struct listNode *next;
//节点的值
void *value;
}listNode;
链表
typedef struct list {
//表头节点
listNode *head;
//表尾节点
listNode *tail;
//链表所包含的节点数量
unsigned long len;
//节点值复制函数
void *(*dup) (void *prt);
//节点值释放函数
void (*free) (void *ptr);
//节点值对比函数
int (*match) (void *ptr, void *key);
} list;
特点:
1.双端 prev和next
2.无环 表头节点的pre为Null,表尾节点的next为Null
3.带表头指针和表尾指针
4.带链表长度计数器 len o(1)
5.多态:void* 可以保存各种不同类型的值