上一篇博客主要总结了单向链表,这次再总结一下双向链表. 1.概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 结构图如下所示: 2.基本操作 ...
分类:
编程语言 时间:
2016-04-24 15:32:38
阅读次数:
270
二叉树:树的每个节点最多有两个子节点。我们看下它的结构,有二叉链表结构与三叉链表结构,具体结果如我摘自《C++Primer》中的图。相比之下,三叉链表的优势在于当我们知道父亲节点要找他的子女节点比较方便和便捷,反之当我们知道子女节点找它的父亲节点时也方便。下面,我实..
分类:
其他好文 时间:
2016-04-20 02:16:09
阅读次数:
227
广义表:又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP语言的程序也表示为一系列的广义表..
分类:
其他好文 时间:
2016-04-20 02:09:13
阅读次数:
177
菜鸟nginx源代码剖析数据结构篇(八) 缓冲区链表 ngx_chain_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn.net/chen19870707 Date:Nov 6th, 2014 1.缓冲区链表结构 ...
分类:
其他好文 时间:
2016-04-19 21:36:49
阅读次数:
578
今天为大家带来Redis五大数据类型之一 -- List的源码分析。Redis中的List类型是一种双向链表结构,其相关操作主要定义在t_list.c文件中。我们从编码方式、迭代器实现和阻塞操作三个方面介绍List。...
分类:
其他好文 时间:
2016-04-16 19:10:53
阅读次数:
238
使用集合的技巧: 看到Array就是数组结构,有角标,查询速度很快。 看到link就是链表结构:增删速度快,而且有特有方法。addFirst; addLast;?removeFirst(); removeLast(); getFirst();getLast(); 看到hash就是哈希表,就要想要哈希 ...
分类:
编程语言 时间:
2016-04-16 16:55:26
阅读次数:
143
链表结构: SList.h SList.cpp Test.cpp 2016-04-13 08:13:13 ...
分类:
编程语言 时间:
2016-04-13 08:37:57
阅读次数:
170
今天在看LinkedList的源代码的时候,遇到了一个坑。我研究源码时,发现LinkedList是一个直线型的链表结构,但是我在baidu搜索资料的时候,关于这部分的源码解析,全部都说LinkedList是一个环形链表结构。。我纠结了好长时间,还以为我理解错了,最后还是在Google搜到了结果:因为我看的源码是1.7的而baidu出来的几乎全部都是1.6的。而且也没有对应的说明。在1.7之后,or...
分类:
编程语言 时间:
2016-04-12 17:27:33
阅读次数:
257
1、 在驱动中使用链表sys部分 A、链表结构 B、链表的初始化 C、在链表中插入数据(结点) D、链表数据的删除 E、链表的遍历 2、 //链表指针结构LIST_ENTRY//初始化链表InitializeListHead//判断链表是否为空IsListEmpty//在头部插入结点InsertHe ...
分类:
其他好文 时间:
2016-04-12 00:11:15
阅读次数:
124
LinkedList实现List接口,并且实现了接口中的所有方法,这个操作可以作为一个栈来使用,同时也实现Deque接口,实现了add,poll方法可以为一个队列。内部是使用带头结点的循环双向链表。
结构如下图:
类的继承实现关系
内部类Entry的结构
部分方法源码剖析
add(E e)
添加一个元素的过程。
getFirst()...
分类:
其他好文 时间:
2016-04-11 14:31:25
阅读次数:
120