redis的链表是双向链表,该链表不带头结点,具体如下: 主要总结一下adlist.c和adlist.h里面的关键结构体和函数。 链表节点结构如下: 链表结构如下: 链表迭代器的结构如下: 里面涉及的函数中,增、删的比较简单,就是结构里面没有带头结点,所以需要单独判断一下头结点的特殊情况。另外对于尾 ...
分类:
其他好文 时间:
2017-09-16 23:09:32
阅读次数:
203
双向链表插入节点 如图所示是我们要操作的结构体和在双向链表的图。 现在我们的目的就是在ab节点之间插入x节点。 现在我把这六条线都遍上号: 在插入之前,2,6这两条边是存在的,这两条边就是: 在插入之后,2,6这两条边不存在了,存在的边为4,1,3,5,这四条边就是: 所以要想实现在a,b节点中插入 ...
分类:
其他好文 时间:
2017-09-13 00:26:52
阅读次数:
116
一、ArrayList(a)与LikedList(L)的区别 1、a的内部实现基于数组,而L则基于循环双向链表实现 2、a的初始容量为10,当数据达到上限会进行自动扩容,机制为(旧容量*3)/2-1,因此每次扩容会造成一定的容量溢出,可以用trimToSize()方法取出多出的容量,但相比于L性能上 ...
分类:
其他好文 时间:
2017-09-12 12:19:31
阅读次数:
216
//一般驱动层不使用数据结构,一般Ring3层 双向链表可以将链表形成一个环.BLINK指针指向前一个元素,FLINK指针指向下一个元素.typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink ...
分类:
其他好文 时间:
2017-09-10 12:35:42
阅读次数:
97
分别实现反转单向和双向链表的函数 看代码: 反向双向链表 ...
分类:
编程语言 时间:
2017-09-09 20:55:36
阅读次数:
154
ArrayList查找快增删慢 LinkedList查找慢增删快 ArrayList的底层数据结构是数组,数组中的每一个对象都是有索引值的,可以直接根据该索引值找到该对象.而LinkeList底层数据结构是双向链表,每个对象都是一个连接,每个对象只知道他的上一个下一个元素的地址,所以每查一次必须的从 ...
分类:
其他好文 时间:
2017-09-09 09:39:27
阅读次数:
170
循环链表 相比单链表,循环链表将最后一个结点的指针指向了头结点。 循环链表里没有空指针,所以在判断结束条件时不是判断指针是否为空,而是判断指针是否等于某固定指针。 单链表里,一个结点只能访问它后面的结点,但是循环链表里它能访问所有结点。 双向链表 指针域记录了结点的上一个结点(前驱结点)和下一个节点 ...
分类:
其他好文 时间:
2017-09-08 18:04:05
阅读次数:
198
java.util.Collection集合接口,其中list,set继承collection,map没有继承接口 Iterator接口:遍历集合和map * (1)使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。 ...
分类:
其他好文 时间:
2017-09-08 00:21:49
阅读次数:
225
List是一个双向链表,按照插入顺序排序,可以添加一个元素到头部或者尾部。当对一个空key执行插入操作的时候会创建一个新表。 如果要清空列表,则会杀出对应的key空间。 在List中保存了头节点和未节点,以及链表包含的节点数量。所以查询链表中节点数量的复杂度为O(1)。 在List中保存的每个节点都 ...
分类:
其他好文 时间:
2017-09-07 21:28:49
阅读次数:
134
应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有"同属于一个集合"的关系 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个关系 图形结构或网状结构:数据元素之间存在多个对多个的关系 对于数据不同的逻辑结构,计算机在物理磁盘上通常有两种屋里存储结 ...
分类:
编程语言 时间:
2017-09-06 16:45:02
阅读次数:
160