2.链表

作者: JarvisTH | 来源:发表于2019-05-09 16:04 被阅读0次

一、链表和链表节点的实现

每个链表节点使用一个adlist.h/listNode结构表示:

typrdef struct listNode{
     //前置节点
     strcut listNode *prev;
    
      //后置节点
      struct listNode *next;
      
      //值
      void *value;
}listNode;

多个listNode可以组成双向链表。但使用adlist.h/list来持有链表,操作更方便:

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

    //节点值对比函数
    int (*match)(void *ptr,void *key);
}list;
list结构和listNode结构构成的链表

Redis链表实现的特性:

  • 双向链表
  • 无环
  • 带表头指针和表尾指针
  • 带链表长度计数器
  • 多态:链表节点使用void*指针来保存节点值,并且通过list结构发dup、free、match三个属性为节点值设置类型特定函数,所以链表可以用于保存各种不同类型值。



    链表和链表节点API

相关文章

  • 2.链表

    链表 特点 不需要一块连续的内存空间,它通过“指针”将一组不连续的内存空间串联起来使用 常见的链表结构 单向链表 ...

  • 2.链表

    一、链表和链表节点的实现 每个链表节点使用一个adlist.h/listNode结构表示: 多个listNode可...

  • 双向链表和双向循环链表

    双向链表 线性表-双向链表的结点结构: 带头结点的双向链表: 1.双向链表初始化 2.遍历双向链表 2.双向链表插...

  • 8.单向链表SingleLinkList

    目录:1.单向链表的定义2.单向链表的图解3.单向链表定义操作4.单向链表的实现 1.单向链表的定义 2.单向链表...

  • 9.双向链表DoubleLinkList

    目录:1.双向链表的定义2.双向链表的图解3.双向链表定义操作4.双向链表的实现 1.双向链表的定义 2.双向链表...

  • 链表-链表的建立以及增删操作

    1.单链表 2.单向循环链表 3.双链表

  • 2.链表(二)

    题目汇总https://leetcode-cn.com/tag/linked-list/92. 反转链表 II中等...

  • 2.单链表

    该部分包含以下内容-单链表的增删改查-计算链表长度-逆序链表-寻找(删除)链表倒数第K个元素-逆序打印链表(使用栈)

  • 2.循环链表

  • 数据结构笔记

    数据结构课程概览 ================== 1.顺序表 2.链表:单链表,单向循环链表,双链表...

网友评论

      本文标题:2.链表

      本文链接:https://www.haomeiwen.com/subject/tlbwoqtx.html