国外的网站叫什么,wordpress 获取数据,南宁seo公司,什么叫网站规划目录
链表结构设计
编辑链表节点结构设计
链表的优势与缺陷 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的#xff0c;所以 Redis 自己设计了一个链表数据结构。
链表结构设计
typedef struct list {//链表头节点listNode *head;//链表…目录
链表结构设计
编辑链表节点结构设计
链表的优势与缺陷 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的所以 Redis 自己设计了一个链表数据结构。
链表结构设计
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;
链表节点结构设计
typedef struct listNode {//前置节点struct listNode *prev;//后置节点struct listNode *next;//节点的值void *value;
} listNode;
有前置节点和后置节点本质为双向链表 链表的优势与缺陷
Redis 的链表实现优点如下 listNode 链表节点的结构里带有 prev 和 next 指针获取某个节点的前置节点或后置节点的时间复杂度只需O(1)而且这两个指针都可以指向 NULL所以链表是无环链表list 结构因为提供了表头指针 head 和表尾节点 tail所以获取链表的表头节点和表尾节点的时间复杂度只需O(1)list 结构因为提供了链表节点数量 len所以获取链表中的节点数量的时间复杂度只需O(1)listNode 链表节使用 void* 指针保存节点值并且可以通过 list 结构的 dup、free、match 函数指针为节点设置该节点类型特定的函数因此链表节点可以保存各种不同类型的值 链表的缺陷 链表每个节点之间的内存都是不连续的意味着无法很好利用 CPU 缓存并且容易造成内存碎片化 能很好利用 CPU 缓存的数据结构就是数组因为数组的内存是连续的这样就可以充分利用 CPU 缓存来加速访问。 还有一点保存一个链表节点的值都需要一个链表节点结构头的分配内存开销较大。