【算法总结】【队列均LinkedList】栈和队列、双端队列的使用及案例
1、栈
初始化:Stack<E> stack = new Stack<>();
出栈:stack.pop() 或 stack.remove(stack.size() - 1)
入栈:stack.push(2) 或 stack.add(1)
栈顶:stack.peek()
2、队列
初始化:Queue<E> queue = new LinkedList<>();
入队:queue.offer(2) 或 queue.add(3)
出队:queue.poll() 或 queue.remove()
查看队头元素:queue.peek()
3、双端队列
初始化:
//Deque<Integer> deque = new ArrayDeque<>();
Deque<Integer> deque1 = new LinkedList<>();
入队:
deque1.addFirst(1);
deque1.addLast(2);
deque1.offerFirst(3);
deque1.offerLast(4);
出队:
deque1.removeFirst()
deque1.removeLast()
deque1.pollFirst()
deque1.pollLast()
查看队头元素:
deque1.peekFirst()
deque1.peekLast()
4、测试
public static void main(String[] args) {
//System.out.println(isValid("([])"));
//testQueue();
testStack();
}
public static void testDeque() {
//双端队列
Deque<Integer> deque = new ArrayDeque<>();
Deque<Integer> deque1 = new LinkedList<>();
//入队
deque1.addFirst(1);
deque1.addLast(2);
deque1.offerFirst(3);
deque1.offerLast(4);
System.out.println(deque1.peekFirst());
System.out.println(deque1.peekLast());
//出队
System.out.println(deque1.removeFirst());
System.out.println(deque1.removeLast());
System.out.println(deque1.pollFirst());
System.out.println(deque1.pollLast());
}
public static void testQueue() {
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.add(3);
System.out.println(queue.peek());
System.out.println(queue.poll());
System.out.println(queue.peek());
System.out.println(queue.remove());
System.out.println(queue.peek());
}
public static void testStack() {
Stack<Integer> stack = new Stack<>();
stack.add(1);
stack.push(2);
stack.push(3);
System.out.println(stack.peek());
System.out.println(stack.pop());
System.out.println(stack.peek());
System.out.println(stack.remove(stack.size() - 1));
System.out.println(stack.peek());
}
【算法总结】【队列均LinkedList】栈和队列、双端队列的使用及案例的更多相关文章
- STL队列 之FIFO队列(queue)、优先队列(priority_queue)、双端队列(deque)
1.FIFO队列 std::queue就是普通意思上的FIFO队列在STL中的模版. 1.1主要的方法有: (1)T front():访问队列的对头元素,并不删除对头元素 (2)T back(): ...
- python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表
目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...
- 用Python实现的数据结构与算法:双端队列
一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...
- 用python实现栈/队列/双端队列/链表
栈是元素的有序集合,添加操作与移除操作都发生在其顶端,先进后出栈操作:创建空栈,增删(顶端),查(顶端元素,元素个数,是否为空)应用:将十进制数转换成任意进制数 class Stack: # 用列表创 ...
- Python实现的数据结构与算法之双端队列详解
一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...
- 自己动手实现java数据结构(四)双端队列
1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念.和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因 ...
- 队列(Queue)\双端队列(Deque)
队列(Queue)\双端队列(Deque) 队列(Queue) 双端队列(Deque) 算法应用 队列(Queue) 特点: 和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样.对于 ...
- ArrayDeque(JDK双端队列)源码深度剖析
ArrayDeque(JDK双端队列)源码深度剖析 前言 在本篇文章当中主要跟大家介绍JDK给我们提供的一种用数组实现的双端队列,在之前的文章LinkedList源码剖析当中我们已经介绍了一种双端队列 ...
- 8、泛型程序设计与c++标准模板库2.3双端队列容器
双端队列容器是一种放松了访问权限的队列.除了从队列的首部和尾部访问元素外,标准的双端队列也支持通过使用下标操作符"[]"进行直接访问. 它提供了直接访问和顺序访问方法.其头文件为& ...
- STL-Deque(双端队列)与单调队列的实现
前言: STl是个好东西,虽然他在不开O2的条件下会跑的很慢,但他着实会让你的代码可读性大大提高,令你的代码看起来既简单又整洁. 双端队列: 顾名思义,双端队列是有两个头的,一个队首指针,一个队尾指针 ...
随机推荐
- 海康摄像机使用GB28181接入SRS服务器的搭建步骤---源码安装的方式
下载代码 地址:https://github.com/ossrs/srs-gb28181 https://github.com/ossrs/srs-gb28181.git 注意:使用的是含有gb281 ...
- 官方文档----ProxySQL 1.4.2 现在支持原生集群!!!
官方文档地址:https://proxysql.com/blog/proxysql-cluster/ 前言 ProxySQL 是一个去中心化的代理,建议靠近应用部署.这种方法甚至可以很好地扩展到数百个 ...
- Filebeat 调试
默认情况下,Filebeat将其所有输出发送到syslog. 在前台运行Filebeat时,可以使用-e命令行标志将输出重定向到标准错误. 例如: filebeat -e 默认配置文件是filebea ...
- 9.使用nexus3配置Python私有仓库
搭建Python私服,我们依旧使用nexus3. 与其他私服一样的,Python私服同样有三种类型: hosted : 本地存储,便于开发者将个人的一些包上传到私服中 proxy : 提供代理其他仓库 ...
- URL Search查询
#基本查询 GET /movies/_search?q=2012&df=title&sort=year:desc&from=0&size=10&timeout= ...
- ELK 性能优化实践 ---总结篇
版本及硬件配置 JDK:JDK1.8_171-b11 (64 位) ES集群:由3台16核32G的虚拟机部署 ES 集群,每个节点分配 20 G 堆内存 ELK版本:6.3.0 垃圾回收器:ES 默认 ...
- echarts 改变个别省份的边界线颜色
想要实现地图,首先要引入china.js文件,如果有引入就直接调过本步骤去下方看代码,没有引入可以点击下方链接自行Ctrl c + Ctrl v china.js import "../.. ...
- LeetCode - 数组的改变和移动
1. 数组的改变和移动总结 1.1 数组的改变 数组在内存中是一块连续的内存空间,我们可以直接通过下标进行访问,并进行修改. 在Java中,对于List类型来说,我们可以通过set(idx, elem ...
- resultMap处理字段和属性的映射关系
1.resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射 <!-- resultMap:设置自定义映射 属性: id:表示自定 ...
- 10.MongoDB系列之副本集组成
1. 同步 复制是指多台服务器保持相同的数据副本.MongoDB通过保存操作日志(oplog)实现复制功能. oplog存在于主节点local数据库中的一个固定集合,包含了主节点执行的每一次写操作. ...