当前位置: 首页 > news >正文

昆明做网站建设的公司排名临沂seo公司稳健火星

昆明做网站建设的公司排名,临沂seo公司稳健火星,python php 做网站,北京专业英文网站建设链表是一种常用的数据结构(如果不了解,请先学习数据结构),由于c语言本身没有实现标准的链表库,所以redis自己实现了一个双向链表。 双向链表在redis内部的使用非常的多,几乎所有模块中都有用到。 下面看下它…

链表是一种常用的数据结构(如果不了解,请先学习数据结构),由于c语言本身没有实现标准的链表库,所以redis自己实现了一个双向链表。
双向链表在redis内部的使用非常的多,几乎所有模块中都有用到。
下面看下它的结构定义:

// 节点
typedef struct listNode {struct listNode *prev;struct listNode *next;void *value;
} listNode;// 迭代器
typedef struct listIter {listNode *next;int direction;
} listIter;// 双向链表
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;

listNode中的value定义为void *,所以它可以被用来存储任意类型的数据。而对于不同的数据,在处理时可能需要用到不同的函数,因此在list中定义了3个函数指针,分别对应不同类型数据的复制、释放和对比功能。当对value进行处理时,如果设置了函数指针,就有可能会调用它们进行相应处理。
比如在清空函数中:

void listEmpty(list *list)
{unsigned long len;listNode *current, *next;current = list->head;len = list->len;while(len--) {next = current->next;// 释放if (list->free) list->free(current->value);zfree(current);current = next;}list->head = list->tail = NULL;list->len = 0;
}

当 free 函数指针不为空时,会调用它释放value。而 dup 和 match 函数会分别在 listDup 和 listSearchKey 中使用。由于双向链表整体代码实现比较简单,因此其它代码也不作过多说明。
最后我们再简单看下迭代器:

// 迭代器
typedef struct listIter {listNode *next;int direction;
} listIter;/* Directions for iterators */
#define AL_START_HEAD 0
#define AL_START_TAIL 1

它由一个节点指针和迭代方向组成

  • direction为AL_START_HEAD,通过 ->next 往后迭代
  • direction为AL_START_TAIL,通过 ->prev 往前迭代

迭代器的相关函数:

// 创建迭代器
listIter *listGetIterator(list *list, int direction);
// 根据方向迭代
listNode *listNext(listIter *iter);
// 释放迭代器
void listReleaseIterator(listIter *iter);
// 重置迭代器到表头
void listRewind(list *list, listIter *li);
// 重置迭代器到表尾
void listRewindTail(list *list, listIter *li);
http://www.qdjiajiao.com/news/8979.html

相关文章:

  • 企业做网站多少钱流量查询网站
  • 一比一高仿手表网站指数运算法则
  • 摄影网站免费源码兰州网络seo公司
  • 专业的网站建设报价郑州专业的网站公司
  • 毕节城乡建设局网站查询建立网站费用大概需要多少钱
  • 徐州网站建设技术托管网址seo关键词
  • 网站上循环滚动的友情链接怎么做常州seo
  • 学校电脑课做网站的软件百度移动端模拟点击排名
  • wordpress建站 购物网络公司网络推广服务
  • 网站管理员的联系方式北京网站建设制作公司
  • 网站建设的费用是多少钱网络营销网站推广
  • 深圳企业官方网站建设营销型网站的分类不包含
  • 响应式网页设计的理念株洲专业seo优化
  • 东莞网站设百度搜索广告怎么投放
  • 高性能网站建设指南 书百度关键词排名查询
  • 如何建立营销性企业网站论文网站查询备案信息
  • 开发网站公司排行宁波seo教学
  • 公司建设网站计入什么分录亚马逊开店流程及费用
  • 全国知名vi设计公司汕头seo计费管理
  • 基于php网站开发seo搜索引擎优化报价
  • 买一个成品网站多少钱百度seo关键词优化软件
  • 临沂网网站建设b2b有哪些电商平台
  • 织梦网站英文版怎么做营业推广的方式
  • 哪个网站是专做宝宝饭的发帖秒收录的网站
  • 唯品会网站架构网站seo设置是什么意思
  • 网站支持ipv6做哪些改造软文网官网
  • com网站域名可以是汉字吗济南seo优化外包服务
  • 免费微场景制作网站最近的国内新闻
  • 系统运维湖北网络推广seo
  • axure做网站搜狗站长管理平台