adlist.h/adlist.c
節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu):
typedef struct listNode {
// 前置節(jié)點(diǎn)
struct listNode *prev;
// 后置節(jié)點(diǎn)
struct listNode *next;
// 節(jié)點(diǎn)的值
void *value;
} listNode;

Paste_Image.png
list 數(shù)據(jù)結(jié)構(gòu)
typedef struct list {
// 表頭節(jié)點(diǎn)
listNode *head;
// 表尾節(jié)點(diǎn)
listNode *tail;
// 鏈表所包含的節(jié)點(diǎn)數(shù)量
unsigned long len;
// 節(jié)點(diǎn)值復(fù)制函數(shù)
void *(*dup)(void *ptr);
// 節(jié)點(diǎn)值釋放函數(shù)
void (*free)(void *ptr);
// 節(jié)點(diǎn)值對(duì)比函數(shù)
int (*match)(void *ptr, void *key);
} list;
- dup 函數(shù)用于復(fù)制鏈表節(jié)點(diǎn)所保存的值;
- free 函數(shù)用于釋放鏈表節(jié)點(diǎn)所保存的值;
- match 函數(shù)則用于對(duì)比鏈表節(jié)點(diǎn)所保存的值和另一個(gè)輸入值是否相等。

由 list 結(jié)構(gòu)和 listNode 結(jié)構(gòu)組成的鏈表