Redis设计与实现——第一部分 数据结构与对象 第3章 链表

博客介绍了Redis的使用场景,包括列表键、发布与订阅等。详细给出了链表和链表节点的实现代码,如链表节点包含前置、后置节点和节点值,链表包含表头、表尾节点等信息。还阐述了链表双端、无环、带指针和计数器、多态等特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用场景:1. 列表键 2.发布与订阅 3.慢查询 4.监视器 5.保存客户端状态信息 6.构建客户端输出缓存区 output buffer
链表和链表节点的实现

链表节点
adlist.h/listNode
typedef struct listNode {
//前置节点
struct listNode *prev;
//后置节点
struct listNode *next;
//节点的值
void *value;
}listNode;

链表
typedef struct list {
//表头节点
listNode *head;
//表尾节点
listNode *tail;
//链表所包含的节点数量
unsigned long len;
//节点值复制函数
void *(*dup) (void *prt);
//节点值释放函数
void (*free) (void *ptr);
//节点值对比函数
int (*match) (void *ptr, void *key);
} list;

在这里插入图片描述

特点:
1.双端 prev和next
2.无环 表头节点的pre为Null,表尾节点的next为Null
3.带表头指针和表尾指针
4.带链表长度计数器 len o(1)
5.多态:void* 可以保存各种不同类型的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值