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、测试

  1. public static void main(String[] args) {
  2. //System.out.println(isValid("([])"));
  3. //testQueue();
  4. testStack();
  5. }
  6.  
  7. public static void testDeque() {
  8. //双端队列
  9. Deque<Integer> deque = new ArrayDeque<>();
  10. Deque<Integer> deque1 = new LinkedList<>();
  11. //入队
  12. deque1.addFirst(1);
  13. deque1.addLast(2);
  14. deque1.offerFirst(3);
  15. deque1.offerLast(4);
  16. System.out.println(deque1.peekFirst());
  17. System.out.println(deque1.peekLast());
  18. //出队
  19. System.out.println(deque1.removeFirst());
  20. System.out.println(deque1.removeLast());
  21. System.out.println(deque1.pollFirst());
  22. System.out.println(deque1.pollLast());
  23.  
  24. }
  25. public static void testQueue() {
  26. Queue<Integer> queue = new LinkedList<>();
  27. queue.offer(1);
  28. queue.offer(2);
  29. queue.add(3);
  30. System.out.println(queue.peek());
  31. System.out.println(queue.poll());
  32. System.out.println(queue.peek());
  33. System.out.println(queue.remove());
  34. System.out.println(queue.peek());
  35. }
  36.  
  37. public static void testStack() {
  38. Stack<Integer> stack = new Stack<>();
  39. stack.add(1);
  40. stack.push(2);
  41. stack.push(3);
  42. System.out.println(stack.peek());
  43. System.out.println(stack.pop());
  44. System.out.println(stack.peek());
  45. System.out.println(stack.remove(stack.size() - 1));
  46. System.out.println(stack.peek());
  47. }

【算法总结】【队列均LinkedList】栈和队列、双端队列的使用及案例的更多相关文章

  1. STL队列 之FIFO队列(queue)、优先队列(priority_queue)、双端队列(deque)

    1.FIFO队列   std::queue就是普通意思上的FIFO队列在STL中的模版. 1.1主要的方法有: (1)T front():访问队列的对头元素,并不删除对头元素 (2)T back(): ...

  2. python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表

    目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...

  3. 用Python实现的数据结构与算法:双端队列

    一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...

  4. 用python实现栈/队列/双端队列/链表

    栈是元素的有序集合,添加操作与移除操作都发生在其顶端,先进后出栈操作:创建空栈,增删(顶端),查(顶端元素,元素个数,是否为空)应用:将十进制数转换成任意进制数 class Stack: # 用列表创 ...

  5. Python实现的数据结构与算法之双端队列详解

    一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...

  6. 自己动手实现java数据结构(四)双端队列

    1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念.和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因 ...

  7. 队列(Queue)\双端队列(Deque)

    队列(Queue)\双端队列(Deque) 队列(Queue) 双端队列(Deque) 算法应用 队列(Queue) 特点: 和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样.对于 ...

  8. ArrayDeque(JDK双端队列)源码深度剖析

    ArrayDeque(JDK双端队列)源码深度剖析 前言 在本篇文章当中主要跟大家介绍JDK给我们提供的一种用数组实现的双端队列,在之前的文章LinkedList源码剖析当中我们已经介绍了一种双端队列 ...

  9. 8、泛型程序设计与c++标准模板库2.3双端队列容器

    双端队列容器是一种放松了访问权限的队列.除了从队列的首部和尾部访问元素外,标准的双端队列也支持通过使用下标操作符"[]"进行直接访问. 它提供了直接访问和顺序访问方法.其头文件为& ...

  10. STL-Deque(双端队列)与单调队列的实现

    前言: STl是个好东西,虽然他在不开O2的条件下会跑的很慢,但他着实会让你的代码可读性大大提高,令你的代码看起来既简单又整洁. 双端队列: 顾名思义,双端队列是有两个头的,一个队首指针,一个队尾指针 ...

随机推荐

  1. nginx日志参数及含义

    参数含义 $remote_addr,$http_x_forwarded_for #记录客户端IP地址 $remote_user #记录客户端用户名称 $request #记录请求的URL和HTTP协议 ...

  2. Redis的web管理界面redis-manager

    下载 下载地址:https://github.com/ngbdf/redis-manager/releases 配置 tar -zxv -f redis-manager-2.3.2.2-RELEASE ...

  3. Gitlab添加K8S集群

    介绍如何在Gitlab项目中添加K8S集群,以便使用K8S集群部署gitlab-runner帮我们运行gitlab的CI/CD. 参考官方文档:https://docs.gitlab.com/ee/u ...

  4. 使用SqlDataReader对象从数据库中检索只读的数据。

    SqlDataReader对象每次从查询结果中读取一行到内存中,对于sql数据库,如果只需要顺序读取,可以优先选择SqlDataReader,其对数据库的读取速度非常快. 调用SqlDataReade ...

  5. 二叉树及其三种遍历方式的实现(基于Java)

    二叉树概念: 二叉树是每个节点的度均不超过2的有序树,因此二叉树中每个节点的孩子只能是0,1或者2个,并且每个孩子都有左右之分. 位于左边的孩子称为左孩子,位于右边的孩子成为右孩子:以左孩子为根节点的 ...

  6. vscode markdown WYSIWYG 所见即所得编辑和预览

    一直使用Typora编写markdown,随着vscode在工作中使用的越来越多,产生了一个想法:能不能在vscode中写markdown,减少软件的成本? 可是vscode官方自带的的markdow ...

  7. SpringBoot(七) - Redis 缓存

    1.五大基本数据类型和操作 1.1 字符串-string 命令 说明 set key value 如果key还没有,那就可以添加,如果key已经存在了,那会覆盖原有key的值 get key 如果ke ...

  8. 构造器与this、package、import关键字的使用

    构造器一.构造器的作用: 1.创建对象 2.初始化对象的信息 二.说明: 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器 2.定义构造器的格式:权限修饰符 类名(形参列表){} ...

  9. 分支结构中的if-else(条件判断结构)

    一.三种结构 第一种: if(条件表达式){ 执行表达式}第二种:二选一 if(条件表达式){ 执行表达式1}else{ 执行表达式2}第三种:n选一 if(条件表达式){ 执行表达式1}else i ...

  10. Response对象页面重定向、时间的动态显示

    Response对象 response对象主要用于对客户端的请求进行回应,将web服务器处理后的结果发回给客户端,封装了jsp产生的响应,并发送到客户端响应客户端的请求,请求的数据可以是各种数据类型, ...