七叶笔记 » 数据库 » 详解Redis中的双链表结构

详解Redis中的双链表结构

2.双向链表结构

3.双向链表遍历器

4.宏定义函数

5.定义函数

list结构和listNode结构的API list和listNode都有它们自己的一族API,这里贴出来学习一下redis的源码(ps:下面的代码都是我仿照redis改写能直接编译运行的代码)

list *listCreate(void)

void listRelease(list *list)

 

list *listAddNodeTail(list *list, void *value)

list *listInsertNode(list *list, listNode *old_node, void *value, int after)

 

void listDelNode(list *list, listNode *node)

  

迭代器 其实我对迭代器的概念非常陌生,因为我是纯c程序员,不会c++,这里直接跟着学了!

Redis针对list结构实现了一个迭代器,用于对链表进行遍历

迭代器的结构定义如下:

direction决定了迭代器是沿着next指针向后迭代,还是沿着prev指针向前迭代,这个值可以是adlist.h中的AL_START_HEAD常量或AL_START_TAIL常量:

学习一下迭代器的api实现:

listIter *listGetIterator(list *list, int direction)

void listRewind(list *list, listIter *li)

void listRewindTail(list *list, listIter *li)

listNode *listNext(listIter *iter)

相关文章