ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。 LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了它 ...
分类:
其他好文 时间:
2018-03-27 16:41:21
阅读次数:
119
LinkedList 源码分析 1.结构 1. 继承 该类继承自 AbstractSequentialList 这个是由于他是一个顺序的列表,所以说继承的是一个顺序的 List 2. 实现 这个类实现的接口比较多,具体如下: 1. 首先这个类是一个 List 自然有 List ...
分类:
其他好文 时间:
2018-03-26 23:36:22
阅读次数:
201
STL中的vector特点是: 其容量在需要时可以自动分配,本质上是数组形式的存储方式。即在索引可以在常数时间内完成。缺点是在插入或者删除一项时,需要线性时间。但是在尾部插入或者删除,是常数时间的。 STL的 list 是双向链表:如果知道位置,在其中进行插入和删除操作时,是常数时间的。索引则需要线 ...
分类:
其他好文 时间:
2018-03-25 16:20:43
阅读次数:
189
一.什么是链表 链表是由一系列节点构成,每个节点由一个值域和指针域构成,值域中存储着用户数据,指针域中存储这指向下一个节点的指针.根据结构的不同,链表可以分为单向链表、单向循环链表、双向链表、双向循环链表等。单向链表的结构如下图所示: head 节点永远指向第一个节点, tail节点永远指向最后一个 ...
分类:
编程语言 时间:
2018-03-25 10:39:12
阅读次数:
280
LinkedList是List和Deque接口的双向链表的实现。实现了所有可选List操作,并允许包括null值。LinkedList既然是通过双向链表去实现的,那么它可以被当作堆栈、队列或双端队列进行操作。并且其顺序访问非常高效,而随机访问效率比较低。 ...
分类:
其他好文 时间:
2018-03-21 23:22:17
阅读次数:
229
1.ArrayList ArrayList<E> extends AbstractList<E> 底层实现是个动态数组 2.LinkedList class LinkedList<E> extends AbstractSequentialList<E> 是个双向链表 区别: get和set:Arra ...
分类:
其他好文 时间:
2018-03-15 16:21:36
阅读次数:
111
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3503480.html LinkedBlockingDeque介绍 LinkedBlockingDeque是双向链表实现的双向并发阻塞队列。该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头 ...
分类:
数据库 时间:
2018-03-12 21:06:52
阅读次数:
276
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308807.html 第1部分 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端 ...
分类:
编程语言 时间:
2018-03-11 17:26:45
阅读次数:
176
比如在一个项目中,有大量的数据结构,他们都是双向链表,但又想共用一套对链表的操作算法,这怎么做到呢,C中又没有C++中的继承,不然我可以继承一父(类中只有两个指针,一个向前一个向后),而其算法可以写在你类中的虚函数中,供子类使用。如: class Links{public: Links* back; ...
分类:
其他好文 时间:
2018-03-03 23:32:19
阅读次数:
288
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。二叉树作为存储结构时,一个节点只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱或后继信息。 也就是说,线索二 ...
分类:
其他好文 时间:
2018-03-01 17:33:10
阅读次数:
181