文档章节

双端队列

贲大侠
 贲大侠
发布于 2017/07/25 15:41
字数 398
阅读 101
收藏 0

        最近在看BlockingDeque的api文档,里面提到了双端队列,看完有点懵逼,于是乎学习了一番。

         在说双端之前先简单说下栈和队列。栈的两端分别是栈顶和栈底,其限制是只允许在一段进行插入和删除的操作,这一端就是栈顶,栈插入元素的顺序是从栈顶压入栈底,删除则是从栈顶开始删除,也就是说栈的出入规则是先进后出,先进者靠栈底近,后进者靠栈顶近,出栈的时候是从栈顶开始的,用大白话说先进栈的元素要比后进入的出栈要晚,这个规则就是“先进后出”。  

                

                            

        在说下队列,队列就简单多了,队列的操作是由两端进行的,一端插入,这是队尾,一端删除,这是队首。队列的出入规则是“先进先出”。

                                                    

        双端队列是一种具有栈和队列性质的数据结构,插入和删除是在两端进行。这些方法可以叫作insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端队列功能就和栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和队列一样了。双端队列与栈或队列相比,是一种多用途的数据结构,在容器类库中有时会用双端队列来提供栈和队列两种功能。

    

© 著作权归作者所有

贲大侠
粉丝 1
博文 18
码字总数 17703
作品 0
海淀
程序员
Java的Queue集合

Queue用于模拟队列这种数据结构,队列通常是指“先进先出”FIFO的容器,队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。Queue接口中定义了如下几个方...

西红柿的眼泪
2016/07/14
31
0
STL 一些常用的STL函数(持续更新

先说一下 一边要用到算法的东西一般要加#include头文件 一、栈和队列 1 栈 :一种线性表 特点 后进先出 头文件 #include 声明 stack< 类型 > sk(变量); 注意 这里的类型 如果是char只能是单...

轻封细解
07/25
0
0
【死磕Java并发】-----J.U.C之阻塞队列:LinkedBlockingDeque

原文出处http://cmsblogs.com/ 『chenssy』 前面的BlockingQueue都是单向的FIFO队列,而LinkedBlockingDeque则是一个由链表组成的双向阻塞队列,双向队列就意味着可以从对头、对尾两端插入和...

chenssy
2017/10/03
0
0
【死磕Java并发】—–J.U.C之阻塞队列:LinkedBlockingDeque

原文出处http://cmsblogs.com/ 『chenssy』 前面的BlockingQueue都是单向的FIFO队列,而LinkedBlockingDeque则是一个由链表组成的双向阻塞队列,双向队列就意味着可以从对头、对尾两端插入和...

chenssy
2017/10/03
0
0
数据结构与算法12-栈和队列-循环队列-优先级队列

无数据项计数的循环队列算法: 在判满和判空需要注意,由于是循环队列,所以有可能rear和front指针指向同一位置,但是出现的情况有很多,造成可空可满的情况,所以数据项要比存储空间少一,这...

沉迷于编程的小菜菜
07/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
33分钟前
0
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
41分钟前
2
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
10
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
0
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部