首先,給出redis中鏈表節(jié)點(diǎn)的定義:
typedef struct listNode {
struct listNode *prev; // 前置節(jié)點(diǎn)
struct listNode *next; // 后置節(jié)點(diǎn)
void *value; // 節(jié)點(diǎn)值域
}listNode;
可以看出,這里的鏈表是雙端鏈表。下面是鏈表的定義:
typedef struct list {
listNode *head; // 鏈表頭結(jié)點(diǎn)
listNode *tail; // 鏈表尾結(jié)點(diǎn)
unsigned long len; // 鏈表長度
void *(*dup) (void *ptr); // 節(jié)點(diǎn)復(fù)制函數(shù)
void (*free) (void *ptr); //節(jié)點(diǎn)釋放函數(shù)
int (*match) (void *ptr, void *key); // 節(jié)點(diǎn)對比函數(shù)
}list;