一、链表和链表节点的实现
每个链表节点使用一个adlist.h/listNode结构来表示:
多个listNode可以通过prev和next指针组成双端链表,如下图所示:
虽然仅仅使用多个listNode结构就可以组成链表,但使用adlist.h/list来持有链表的话,操作起来会更方便:
list结构为链表提供了表头指针head、表尾指针tail,以及链表长度计数器len,而dup、free和match成员则是用于实现多态链表所需的类型特定函数:
- dup函数用于复制链表节点所保存的值
- free函数用于释放链表节点所保存的值
- match函数则用于对比链表节点所保存的值和另一个输入值是否相等
下图是由一个list结构和三个listNode结构组成的链表: