博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis数据结构实现(二)
阅读量:6470 次
发布时间:2019-06-23

本文共 770 字,大约阅读时间需要 2 分钟。

redis数据结构实现(二)

2.链表和链表节点的实现

    • *
      每个链表节点由一个listNode实现
typeof struct listNode{    //前置节点        struct listNode *prev;        //前置节点        struct listNode *next;        //值        void *value;    }listNode;

用list来持有链表

typeof struct list{    //表头节点        listNode *head;        //表尾节点        listNode *tail;        //链表长度        unsigned long len;        //节点值复制函数        void *(*dup)(void *ptr);        //节点值释放函数        void (*free)(void *ptr)        //节点值对比函数        int (*match)(void *ptr,void *key)    }

redis链表的实现特性总结如下:

  • 双端:链表节点带有prev和next指针
  • 无环:表头节点的prev指针和表尾节点的next指针都指向null,访问链表以null为终点
  • list中带头指针和表尾指针:通过list结构中的head和tail指针访问表头尾节点时间复杂度为O(1)
  • 链表长度计数器:list结构中有len属性来记录链表长度,获取链表长度时间复杂度为O(1)
  • 链表节点void* 指针来保存节点值,可以通过list结构的dup、free、match三个属性为节点值设置类型特定函数,所以链表可以用于保存各种不同类型的值。

转载地址:http://zfjko.baihongyu.com/

你可能感兴趣的文章
C#_delegate - 调用列表
查看>>
jQuery.extend 函数详解
查看>>
[转]Windows的批处理脚本
查看>>
多维数组元素的地址
查看>>
数据库运维体系_SZMSD
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
静态库 调试版本 和发布版本
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>
==与equals()的区别
查看>>
基本分类方法——KNN(K近邻)算法
查看>>
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
面象过程与面象对象
查看>>
谷歌设置支持webgl
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>