zoukankan      html  css  js  c++  java
  • [redis读书笔记] 第一部分 数据结构与对象 链表

    二 链表

     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

  • 相关阅读:
    问答
    正在设计taijilang的解析器,真可谓尸横遍地
    因为这些理由而坚持用grunt?其实它们都不成立。
    开始设计taijijs
    从grunt转到gulp
    google 索引
    :: operator
    用coffeescript写构造函数
    jade与angular.js
    angular.js 资料收集
  • 原文地址:https://www.cnblogs.com/jiangz222/p/6421911.html
Copyright © 2011-2022 走看看