adlist.h/adlist.c
節點的數據結構:
typedef struct listNode {
// 前置節點
struct listNode *prev;
// 后置節點
struct listNode *next;
// 節點的值
void *value;
} listNode;
Paste_Image.png
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;
- dup 函數用于復制鏈表節點所保存的值;
- free 函數用于釋放鏈表節點所保存的值;
- match 函數則用于對比鏈表節點所保存的值和另一個輸入值是否相等。
由 list 結構和 listNode 結構組成的鏈表