今天为大家带来Redis五大数据类型之一 -- List的源码分析。Redis中的List类型是一种双向链表结构,其相关操作主要定义在t_list.c文件中。我们从编码方式、迭代器实现和阻塞操作三个方面介绍List。...
分类:
其他好文 时间:
2016-04-16 19:10:53
阅读次数:
238
////////////////////////////////////////////////////////////////////////////////////// /////// 这里建立两个类,一个节点类和一个List类,与单链表不同的是双向链表的节点要多一 ////// 个前驱指针,相 ...
分类:
编程语言 时间:
2016-04-16 15:15:45
阅读次数:
301
未考虑性能,只是能完成基本功能,应付公司考试而已。 ...
分类:
编程语言 时间:
2016-04-16 08:25:37
阅读次数:
254
链表是一种很常见的数据结构,单链表、双向链表、循环链表和复杂链表都是其衍生物。复杂链表之所以命名为复杂链表,也正是由于其结构的复杂。它比其他其他种类的链表多了一个指针域,这个指针域可以指向链表中的任一结点,也可以为空。其结构定义如下:structComplexNode
{
Da..
分类:
其他好文 时间:
2016-04-14 22:37:42
阅读次数:
252
链表是一种很常见的数据结构,单链表、双向链表、循环链表和复杂链表都是其衍生物。复杂链表之所以命名为复杂链表,也正是由于其结构的复杂。它比其他其他种类的链表多了一个指针域,这个指针域可以指向链表中的任一结点,也可以为空。其结构定义如下:structComplexNode
{
Da..
分类:
其他好文 时间:
2016-04-14 22:37:36
阅读次数:
236
线性表分为顺序存储结构和链式存储结构(单链表,静态链表,循环链表,双向链表)。 单链表(**一种动态结构,所占空间的大小和位置不需要预先分配划定) 每一个节点只记录一个节点信息,不能断。 若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构(只读取情况)。若需要频繁插入和删除和插入时, ...
分类:
其他好文 时间:
2016-04-13 20:33:23
阅读次数:
165
LinkedList实现List接口,并且实现了接口中的所有方法,这个操作可以作为一个栈来使用,同时也实现Deque接口,实现了add,poll方法可以为一个队列。内部是使用带头结点的循环双向链表。
结构如下图:
类的继承实现关系
内部类Entry的结构
部分方法源码剖析
add(E e)
添加一个元素的过程。
getFirst()...
分类:
其他好文 时间:
2016-04-11 14:31:25
阅读次数:
120
1、 在认识链表结构exe部分 A、链表结构 B、链表的初始化 C、在链表中插入数据(结点) D、链表的遍历 2、 链表: 链表有单向链表,也有双向链表,有循环的(环形),在这里我们只讨论 双向循环链表。 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。 ...
分类:
其他好文 时间:
2016-04-10 16:22:26
阅读次数:
133
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 如下图。 10 /\ 6 14 /\ /\ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 这是一种二叉树的中序遍历。 typedef struct BSTreeNo ...
分类:
编程语言 时间:
2016-04-10 10:22:11
阅读次数:
134