1.2. redis数据结构-双向链表

60 阅读1分钟

链表节点结构为

typedef struct listNode {
    struct listNode* prev;
    struct listNode* next;
    void * value;
    
}

因为c语言没有泛型,以及偏底层的特性.数据结构底层存放的实际上都是无类型的指针void * value.实际处理的时候由实际的使用者进行类型的处理.

链表结构为

typedef struct list {
    listNode * head; 
     listNode * tail ;
     unsigned long len; //节点数目
    void *(*dup) (void *ptr);//节点值复制函数指针的指针
    void (*free)(void *ptr);//节点释放函数指针
    int (*match)(void *ptr,void *key);//节点值对比函数
}

tips

  • first listNodeprevnull,而last listNodenextnull