链表文件 adlist.c 阅读

有两个部分:adlist.h 和 adlist.c

首先看看 adlist.h 里定义了哪些变量和函数,能了解个大概,就像目录一样。

adlist.c 是具体的实现,一个关于链表的操作,而且是一个双向链表

链表的话结构比较简单,总共有三个结构体:

listNode 用来定义节点的结构:上一个、下一个、当前值

listIter 用来定义迭代器的结构:下一个、方向(正向迭代还是逆向迭代)

list 用来定义链表的结构:头、尾、长度、三个函数(复制、匹配、销毁)


此外,还包含了大量的链表操作,常见的增删查改、还有迭代器、旋转的功能

结构体的定义不错,比如list来说,里面不光包含了list的head和tail、len,还包含了一些函数的指针,比如dup(复制)、free(释放)、match(按key查找),这样的话就可以自定义这些函数的具体实现,更加灵活。

typedef struct list {

    listNode *head;

    listNode *tail;

    void *(*dup)(void *ptr); 

    void (*free)(void *ptr);

    int (*match)(void *ptr, void *key);

    unsigned long len;

} list;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容