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