[redis读书笔记] 第一部分 数据结构与对象 链表
2024-10-08 06:14:56
二 链表
1.链表节点使用ListNode结构,是一个双向的链表,同时,还实现了一个控制所有ListNode的结构list:
typedef struct listNode { // 前置节点
struct listNode *prev; // 后置节点
struct listNode *next; // 节点的值
void *value; } listNode;
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;
由list和listnode组成的基本结构如下,可见
- listNode里的prev和next构成双向列表
- list.head和list.tail使访问头尾node的复杂度为o(1)
- 头Node的prev和尾node的next指向NULL,不会成环
- list.len使访问list长度的复杂度为o(1)
- 多态:通过list.match,list.free和list.dup来实现多态,即支持各种类型的listnode.value
最新文章
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(50)-Easyui 扁平化皮肤
- jquery on和bind
- spring+task配置
- 什么时候加上android.intent.category.DEFAULT
- Docker的单主机容器网络
- jquery 图片手风琴效果
- Java 设计模式_复合模式(2016-08-31)
- Flex中的FusionCharts 2D饼图
- Distance on the tree
- 6-MVC结构简介
- docker 清理容器的命令
- Android Studio提示 Connection reset
- 运行pytorch代码遇到的error解决办法
- tomcat在Debug模式下无法启动解决办法
- SharePoint 2010:“&”作为SharePoint账号密码引起的错误
- hbase-java-api002(flush)
- java多线程_01_线程的基本概念
- 关于Mysql数据库进行多表查询时设计编程思想
- windows sserver 2008远程桌面端口修改
- HDU 6462.人类史上最大最好的希望事件-递推 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)