JDK源码学习系列05----LinkedList
1.LinkedList简介
LinkedList是基于双向链表实现的,它也可以被当作堆栈、队列或双端队列进行操作。
public class LinkedList
extends AbstractSequentialList
implements List, Deque, Cloneable, java.io.Serial...
分类:
其他好文 时间:
2014-06-20 12:54:28
阅读次数:
205
通过阅读 OpenJDK 的 java.util.ArrayDeque ,学习底层是数组,且数组可变大小的双端队列的实现细节。...
分类:
其他好文 时间:
2014-06-20 09:38:40
阅读次数:
186
双端队列(Deque:double ended queue)就是一个两端都是结尾的队列。队列的每一端都可以插入数据项和移除数据项。相对于普通队列,双端队列的入队和出队操作在两端都可进行。这里我们使用最常用的顺序结构来存储双端队列,为了节省空间,把它首尾相连,构成循环队列。并且规定left指向左端的第一个元素,right指向右端的下一个位置。那么队空的判断则是left==right,队满是(left-1+MAX)%MAX==right或者(right-left+MAX)%MAX==MAX。...
分类:
其他好文 时间:
2014-06-18 00:40:38
阅读次数:
296
1.一种并行计算的多线程编程模型2.开始--任务分割--多线程异步执行---任务合并--阻塞等待合并结果。(分治算法)3.work-stealing算法:
每个线程维护一个各自的双端的链表,有新任务时之间插入的前端优先执行,前端无任务时,窃取其他线程双端链表的任务加入到自己的尾端进行处理。 通常.....
分类:
其他好文 时间:
2014-06-08 21:28:47
阅读次数:
357
求连续的k个中最大最小值,k是滑动的,每次滑动一个
用双端队列维护可能的答案值
如果要求最小值,则维护一个单调递增的序列
对一开始的前k个,新加入的如果比队尾的小,则弹出队尾的,直到新加入的比队尾大,加入队尾
从第k+1个到最后一个,按照上述规则,压入新数,然后弹出队首元素(满足队首元素对应原来序列的位置必须在视窗内,否则,继续弹出下一个)
#include
#include
#in...
deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列。deque类常用的函数如下。(1)构造函数deque():创建一个空deque...
分类:
其他好文 时间:
2014-06-05 15:08:38
阅读次数:
279
基本概念
队列的定义
队列是一种只能在表的一头插入,另一头删除的线性表,简而言之具有FIFO的特性
组成
队头
队尾
扩展
双端队列
只能在两端进行删除插入操作的线性表
实现
链队列
顺序队列
循环队列
循环队列
循...
分类:
其他好文 时间:
2014-06-01 10:57:30
阅读次数:
380
栈与队列都是具有特殊存取方式的线性表,栈属于先进后出(FILO),而队列则是先进先出(FIFO)。栈能够将递归问题转化为非递归问题,这是它的一个重要特性。除了FILO、FIFO这样的最普遍存取方式外,还有一些扩展的数据结构,如双端队列、双栈、超队列、超栈等,它们是一种扩展与变异结构。
线性表有...
分类:
编程语言 时间:
2014-05-19 11:36:46
阅读次数:
369
1.priority_queue priority_queue,greater >q;
//小根堆,即对头元素最小; priority_queue//默认情况,大根堆,即队头元素最大。(后续更新)2.deque【双端队列】
接口类似vector(单向插入删除) c.pop_back() 弹出最后一个...
分类:
编程语言 时间:
2014-05-10 05:30:09
阅读次数:
348
双端队列(deque容器类):#include与vector
类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是:deque
还支持从开始端插入数据:push_front() 。此外deque 不支持与vector 的capacity() 、res...
分类:
其他好文 时间:
2014-05-09 18:19:39
阅读次数:
404