java栈和队列的实现
栈:后进先出
队列:先进先出
实现使用借助以下类实现:
- Stack:栈类
- Queue:队列类
- LinkedList:双端队列(栈操作建议使用)
一.栈的实现
栈的实现,有两个方法:
一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。
- 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 为基数。
- 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栈和队列的实现相关推荐
- java栈和队列_栈和队列的面试题Java
栈和队列: 面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min ...
- Java数据结构(1.1):数据结构入门+线性表、算法时间复杂度与空间复杂度、线性表、顺序表、单双链表实现、Java线性表、栈、队列、Java栈与队列。
数据结构与算法入门 问题1:为什么要学习数据结构 如果说学习语文的最终目的是写小说的话,那么能不能在识字.组词.造句后就直接写小说了,肯定是不行的, 中间还有一个必经的阶段:就是写作 ...
- Java - 栈和队列
1.栈(Stack) 1.1 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作.进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底.栈中的数据元素遵守后进先出LIFO(Las ...
- java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)
实验二栈和队列的基本操作及其应用 一.实验目的 1.掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用. 2.掌握栈和队列的特点,即后进先出和先进先出的原则. 3.掌握栈和队列的基本运算, ...
- java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)
DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...
- java栈和队列实现删除,数据结构学习--Java栈和队列
栈:先进后出 队列:先进先出 都是数组存放,但是删除的时候不是删除了数组中的数据,而是使用增加游标标识的方式实现删除,"游标标识"加加或者减减完成删除操作,查看的时候,也不是直接查 ...
- java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?
本文已收录至 https://github.com/vipstone/algorithm <算法图解>系列. 队列和栈是计算机中两个非常重要的数据结构,经过前面的学习(<队列> ...
- java 栈和队列实现迷宫代码_Python 实现数据结构中的的栈,队列
栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放 ...
- java 栈和队列实现迷宫代码_使用两个队列实现一个栈
两个队列实现一个栈 栈的特点是后进先出,队列的特点是先进先出.使用两个队列模拟栈,实现栈的push,pop,top,empty 操作. 假设队列中均为数字,其中队列q1为操作队列,q2为辅助队列. p ...
最新文章
- Apple Mach-O Linker Error
- 漫游Kafka实现篇之分布式
- SVD分解.潜语义分析.PythonCode
- 华为p10plus能用鸿蒙吗,华为P10/P10 Plus对比评测:自家兄弟大对决
- 华为手机显示解析服务器返回错误,ajax服务器返回错误
- vb杨辉三角代码编写_「二次开发」——基于VB.NET的NX UG软件二次开发基础
- 百度图神经网络学习——day02:图游走类模型
- oracle基本的查询语句,Oracle中的基本查询语句总结
- BIO、伪异步 IO、AIO和NIO
- Android笔记: 在Eclipse环境下使用Genymotion模拟器
- 190518每日一句
- 如何搭建企业大数据分析平台
- 瑞萨单片机c语言程序,瑞萨单片机学习笔记(1)基本配置
- android解析包时出现问题怎么解决方法,手机安装APP提示解析错误怎么办?解析包时出现问题如何解决?...
- 风生水起的VR直播丨VR直播市场何时迎来爆发期?
- 计算机里没有四款小游戏,90后最爱玩的4款“4399”小游戏,一个都没玩过的太可怜!...
- 写一些我工作中遇到的问题吧
- vscode调试nodejs不要太爽啊
- 全网19套超热门表情包,小狗头、国王排名等我全部整理来了
- 如何一键生成手机淘宝详情页?