本人根据博主 “Android路上的人”的学习路线——地址如下原链接,进行的学习,博主推荐先阅读结构体部分比较好,再次感谢博主“Android路上的人”的分享,对我的学习帮助很大!
本篇记录学习redis的结构体部分的过程(未完待续)
博主说“adlist.c”中重点有——1.数据结构的链表2.函数编程的思想3.c中的迭代器写法,这三个部分,于是我将带着这三部分的思考开始进行学习。
一.2020.11.05
先把adlist的头文件看了
1.链表的节点listNode可看出,是双向链表。
2.节点内的值的部分是一个void*类型的指针,所以使用更灵活
3.迭代器的结构里,是一个单向的链表结点和一个表示方向的int值
4.list链表里包含头结点、尾结点,无符号long型的列表长度、以及三个指针,我现在暂时不知道是什么作用,根据名字推测为——增加、释放、查找??
——查看了博主的博客以后,发现这三个代表的分别是——1.复制函数指针2.释放函数指针3.匹配函数指针
5.后面还有一些代码,原来是宏定义的基本操作,竟然一开始没有看懂
6.在下面就是函数名的定义了,倒是没什么(此图来源字原博主的截图)
7.宏定义了,迭代器的方向——0.从头到尾1.从尾到头
头文件部分主要就是这样了!
8.adlist.c中除了对自身头文件的引用,还引用了zmalloc.h,因此涉及到内存分配的部分
二。11月10日
adlist.c
1.adlist.c文件里面,每个功能函数的流程基本是——(1.新建一个node的指针 2.给node使用malloc分配内存3.分配内存失败返回null,成功将一个传入的空指针类型的value赋值给node的value4.判断list是否为空5.如果是空的则list的head和tail都被赋值为node;否则按需赋值6.更改list的长度7.返回list)