每个链表结构使用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;
每个节点使用一个listNode结构表示:
typedef struct listNode{
struct listNode *prev;
struct listNode *next;
void *value
}listNode;
Redis 链表特性:
双向链表
无环
头尾O(1)
链表长度O(1)
多态:保存多种类型的值