1.链表的基础知识
1.1头指针
ListNode *L = new ListNode; //生成新节点为头节点,头指针L指向头节点;
L->next = NULL; //头节点的指针域为空
头指针指向头节点!!!
1.2头节点
可以直接参考《数据结构》那本书,这里不做赘述!
2.Redis中的链表
2.1链表节点(ListNode)
首先是链表节点因为redis数据库中可能存在双向的迭代,所以我们使用双向链表
typedef struct ListNode{
// 前置节点
struct ListNode* prev;
// 后置节点
struct ListNode* next;
// 数据部分
void *data;
}ListNode;
同理双向的迭代需要以O(1)的时间知道链表的头节点和尾节点和长度等信息,所以我们在这里设置一个List结构用来管理ListNode
2.2链表管理(List)
List1.0版本
/******** List1.0 *********/
typedef struct List{
ListNode *head; //头节点
ListNode *tail; //尾节点
unsigned long len ; // 链表长度
}List;