当前位置: 首页 > news >正文

网站建设 网站内容 采集知识搜索引擎

网站建设 网站内容 采集,知识搜索引擎,阿里邮箱企业版app下载,iis默认网站建设中文章目录232. 用栈实现队列补充知识——Deque232. 用栈实现队列 答案思路: 在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来&#xff0…

文章目录

  • 232. 用栈实现队列
  • 补充知识——Deque

232. 用栈实现队列

答案思路:

在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。

如果进栈和出栈都为空的话,说明模拟的队列为空了。

class MyQueue {Deque<Integer> inStack;Deque<Integer> outStack;public MyQueue() {inStack=new LinkedList<Integer>();outStack=new LinkedList<Integer>();}public void push(int x) {inStack.push(x);}public int pop() {if(outStack.isEmpty()){popInStack();}return outStack.pop();}public int peek() {if(outStack.isEmpty()){popInStack();}return outStack.peek();}public boolean empty() {return inStack.isEmpty()&&outStack.isEmpty();}public void popInStack(){while(!inStack.isEmpty()){outStack.push(inStack.pop());}}
}

补充知识——Deque

定义
双向队列:支持插入删除元素的线性集合。
java官方文档推荐用deque实现栈(stack)。

和Queue的区别
Deque是double ended queue,将其理解成双端结束的队列,双端队列,可以在首尾插入或删除元素。
Queue的解释中,Queue就是简单的FIFO队列。
所以在概念上来说,Queue是FIFO的单端队列,Deque是双端队列。

特点
1.插入、删除、获取操作支持两种形式:快速失败和返回null或true/false
2.既具有FIFO特点又具有LIFO特点,即是队列又是栈
3.不推荐插入null元素,null作为特定返回值表示队列为空
4.未定义基于元素相等的equals和hashCode

方法

  • addFirst(): 向队头插入元素,如果元素为空,则发生NPE(空指针异常)
  • addLast(): 向队尾插入元素,如果为空,则发生NPE
  • offerFirst(): 向队头插入元素,如果插入成功返回true,否则返回false
  • offerLast(): 向队尾插入元素,如果插入成功返回true,否则返回false
  • removeFirst(): 返回并移除队头元素,如果该元素是null,则发生NoSuchElementException
  • removeLast(): 返回并移除队尾元素,如果该元素是null,则发生NoSuchElementException
  • pollFirst(): 返回并移除队头元素,如果队列无元素,则返回null
  • pollLast(): 返回并移除队尾元素,如果队列无元素,则返回null
  • getFirst(): 获取队头元素但不移除,如果队列无元素,则发生NoSuchElementException
  • getLast(): 获取队尾元素但不移除,如果队列无元素,则发生NoSuchElementException
  • peekFirst(): 获取队头元素但不移除,如果队列无元素,则返回null
  • peekLast(): 获取队尾元素但不移除,如果队列无元素,则返回null
  • pop(): 弹出栈中元素,也就是返回并移除队头元素,等价于removeFirst(),如果队列无元素,则发生NoSuchElementException
  • push(): 向栈中压入元素,也就是向队头增加元素,等价于addFirst(),如果元素为null,则发生NPE,如果栈空间受到限制,则发生IllegalStateException

实现
ArrayDeque: 基于数组实现的线性双向队列,通常作为栈或队列使用,但是栈的效率不如LinkedList高。
LinkedList: 基于链表实现的链式双向队列,通常作为栈或队列使用,但是队列的效率不如ArrayQueue高。

private static void usingAsQueue() {Deque<Integer> queue=new ArrayDeque<>();System.out.println("队列为空:"+queue.isEmpty());   //判断队列是否为空queue.addLast(12);   //添加元素System.out.println("队列为空:"+queue.isEmpty());   //判断队列是否为空System.out.println(queue.peekFirst());   //获取队列首部元素System.out.println(queue.pollFirst());   //获取并移除栈顶元素System.out.println("队列为空:"+queue.isEmpty());   //判断队列是否为空}private static void usingAsStack() {//作为栈使用Deque<Integer> stack=new LinkedList<>();System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空stack.addFirst(12);System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空System.out.println(stack.peekFirst());   //获取栈顶元素System.out.println(stack.pollFirst());   //获取并移除栈顶元素System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空System.out.println("============================================");
http://www.jinmujx.cn/news/79917.html

相关文章:

  • 做漫画的网站有哪些盘多多网盘搜索
  • asp网站可以做移动端网站么国家卫健委:不再发布每日疫情信息
  • 搜索竞价排名临沂seo优化
  • 网页三剑客的网页制作软件是站长网站优化公司
  • 企业官方网站开发如何入账专门培训seo的网站
  • 全面的聊城网站建设网站优化排名软件网
  • 网站开发视频教学太原百度快照优化排名
  • 网站开发分几种类型百度最新秒收录方法2021
  • 深圳专业做网站设计公司网络管理系统
  • 河源市建设网站东莞网络推广托管
  • 音乐资源网站开发seo策略是什么意思
  • 电商网站操作手册sem推广外包
  • 住房和城乡建设部网站三定竞价
  • 小程序网站备案小红书推广怎么收费
  • 本地wordpress安装教程seo博客教程
  • 昆明网站建设费用站长素材官网
  • 旅游产品推广方案seo关键词排名优化怎样收费
  • 郑州郑东新区seo优化软件哪个好
  • 长沙中小企业网站制作百度网址大全下载
  • 实力网站优化公司首选互动营销的概念
  • 网站banner图切换效果快抖霸屏乐云seo
  • 番禺核酸检测点有新调整seo怎么才能优化好
  • 晋中做网站公司刚刚突发1惊天大事
  • 衡水做网站公司长春seo招聘
  • 大学网站建设多少钱百度关键词规划师工具
  • 做网站有哪些语言网络营销包括几个部分
  • 做网站 学php哪一部分东莞网站建设方案外包
  • 闵行网站制作公司传统营销与网络营销的区别
  • 做网站怎么自定义背景图片某网站seo策划方案
  • 深圳狮科网站建设如何做广告宣传与推广