栈:后进先出
队列:先进先出
实现使用借助以下类实现:

  • Stack:栈类
  • Queue:队列类
  • LinkedList:双端队列(栈操作建议使用)

一.栈的实现
栈的实现,有两个方法:
一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。

  1. Stack类
    栈是Vector的一个子类,实现了一个标准的后进先出的栈,栈本身最重要的就是push和pop。
Stack<Integer> stack = new Stack<>();Stack<Character> stack = new Stack<>();//用栈Stack 创建对象(类型不同)boolean empty()//测试堆栈是否为空。Object peek()//查看堆栈顶部的对象,但不从堆栈中移除它。Object pop( )//移除堆栈顶部的对象,并作为此函数的值返回该对象。Object push(Object element)//把项压入堆栈顶部。int search(Object element)//返回对象在堆栈中的位置,以 1 为基数。
  1. LinkedList类
    LinkedList 是一个继承于AbstractSequentialList的双向链表。
    它也可以被当作堆栈、队列或双端队列进行操作。
    LinkedList 实现 List 接口,能对它进行队列操作。
    LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用.
 //ListedList定义栈Deque deque = new LinkedList();Deque<类型> deque = new LinkedList<类型>();boolean isEmpty()//测试堆栈是否为空。//等效方法Object peek()Object peekFirst()//查看堆栈顶部的对象,但不从堆栈中移除它。Object pop( )Object removeFirst()//移除堆栈顶部的对象,并作为此函数的值返回该对象。Object push(Object element)Object addFirst(Object element)//把项压入堆栈顶部。

二.队列的实现
java中虽然有Queue接口,单java并没有给出具体的队列实现类,而Java中让LinkedList类实现了Queue接口,所以使用队列的时候,一般采用LinkedList。因为LinkedList是双向链表,可以很方便的实现队列的所有功能。

 //队列的定义Queue queue = new LinkedList();boolean isEmpty()//测试队列是否为空。//等效方法offer(e)offerLast(e)//进队列,将元素加入队列末尾poll()pollFirse()//移除队列头的元素,并返回该元素peek()peekFirst()//查看队列头的对象,但不从队列中移除。

Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。

要是文章对你有帮助的话,就留下一个赞

java栈和队列的实现相关推荐

  1. java栈和队列_栈和队列的面试题Java

    栈和队列: 面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min ...

  2. Java数据结构(1.1):数据结构入门+线性表、算法时间复杂度与空间复杂度、线性表、顺序表、单双链表实现、Java线性表、栈、队列、Java栈与队列。

    数据结构与算法入门 问题1:为什么要学习数据结构          如果说学习语文的最终目的是写小说的话,那么能不能在识字.组词.造句后就直接写小说了,肯定是不行的, 中间还有一个必经的阶段:就是写作 ...

  3. Java - 栈和队列

    1.栈(Stack) 1.1 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作.进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底.栈中的数据元素遵守后进先出LIFO(Las ...

  4. java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)

    实验二栈和队列的基本操作及其应用 一.实验目的 1.掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用. 2.掌握栈和队列的特点,即后进先出和先进先出的原则. 3.掌握栈和队列的基本运算, ...

  5. java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)

    DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...

  6. java栈和队列实现删除,数据结构学习--Java栈和队列

    栈:先进后出 队列:先进先出 都是数组存放,但是删除的时候不是删除了数组中的数据,而是使用增加游标标识的方式实现删除,"游标标识"加加或者减减完成删除操作,查看的时候,也不是直接查 ...

  7. java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?

    本文已收录至 https://github.com/vipstone/algorithm <算法图解>系列. 队列和栈是计算机中两个非常重要的数据结构,经过前面的学习(<队列> ...

  8. java 栈和队列实现迷宫代码_Python 实现数据结构中的的栈,队列

    栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放 ...

  9. java 栈和队列实现迷宫代码_使用两个队列实现一个栈

    两个队列实现一个栈 栈的特点是后进先出,队列的特点是先进先出.使用两个队列模拟栈,实现栈的push,pop,top,empty 操作. 假设队列中均为数字,其中队列q1为操作队列,q2为辅助队列. p ...

最新文章

  1. Apple Mach-O Linker Error
  2. 漫游Kafka实现篇之分布式
  3. SVD分解.潜语义分析.PythonCode
  4. 华为p10plus能用鸿蒙吗,华为P10/P10 Plus对比评测:自家兄弟大对决
  5. 华为手机显示解析服务器返回错误,ajax服务器返回错误
  6. vb杨辉三角代码编写_「二次开发」——基于VB.NET的NX UG软件二次开发基础
  7. 百度图神经网络学习——day02:图游走类模型
  8. oracle基本的查询语句,Oracle中的基本查询语句总结
  9. BIO、伪异步 IO、AIO和NIO
  10. Android笔记: 在Eclipse环境下使用Genymotion模拟器
  11. 190518每日一句
  12. 如何搭建企业大数据分析平台
  13. 瑞萨单片机c语言程序,瑞萨单片机学习笔记(1)基本配置
  14. android解析包时出现问题怎么解决方法,手机安装APP提示解析错误怎么办?解析包时出现问题如何解决?...
  15. 风生水起的VR直播丨VR直播市场何时迎来爆发期?
  16. 计算机里没有四款小游戏,90后最爱玩的4款“4399”小游戏,一个都没玩过的太可怜!...
  17. 写一些我工作中遇到的问题吧
  18. vscode调试nodejs不要太爽啊
  19. 全网19套超热门表情包,小狗头、国王排名等我全部整理来了
  20. 如何一键生成手机淘宝详情页?

热门文章

  1. 微信小程序布局,小程序view之flex 布局
  2. 父子沟通实用手册 [作者:宝贝爱无忧2007-1]
  3. linux c杀掉进程,linux下杀死进程(kill)的超级用法 | C/C++程序员之家
  4. 如何查看office软件安装日志
  5. python画梅花_Python学习笔记三:函数
  6. Revit插件的下载
  7. 一张图带你看懂电脑玩《和平精英》智能操作键位
  8. java int相除向上取整_Java工程师(4).运算符
  9. Drawlayout
  10. 浅谈大数据的标签管理