一、数据结构 🪜
Redis 的链表就是普通的双向链表。
二、迭代器 🧮
这里的链表的迭代和数据是分开的,采用了类似迭代器模式,这个思想被用到很多场景。
typedef struct listIter {
listNode *next;
int direction;
} listIter;
listIter *listGetIterator(list *list, int direction) {
listIter *iter;
if((iter == zmalloc(sizeof(*iter))) == NULL) return NULL;
if(direction == AL_START_HEAD)
iter->next = list->tail;
iter->direction = direction;
return iter;
}