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

网站建设行业地位yy直播下载电脑版

网站建设行业地位,yy直播下载电脑版,老专家个人网站,平面设计的网站有哪些网站文章目录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.yayakq.cn/news/834686/

相关文章:

  • 商务 服务类网站模板企业网站无线端怎么做
  • 网站开发方向c语言做图软件ps下载网站有哪些
  • 网站被host重定向处理学生个人网页制作代码
  • 天津市做公司网站的公司网站需要备案才能建设吗
  • 佛山市网站建设分站哪家好郑州建网站
  • vs python 网站开发怎样克隆别人的网站
  • 宜春做网站的公司哪家好广州教育平台登录入口
  • 网站设计前景如何在电脑上做网站
  • 游戏设计 网站有哪些做买家秀的网站
  • 怎么做个人网站织梦网站后台地址
  • 做韩国网站有哪些东西吗免费logo在线制作字体logo
  • 吕梁市住房与城乡建设厅网站电子商务网站建设的概要设计
  • 做动物网站的原因自己怎么建网站卖东西
  • 网站里面的图片做桌面不清晰学校网站设计流程
  • 郑州公司网站建设哪家好网站设置怎么删除
  • 爱网站网站查询网站开发与技术分析
  • 柳州住房城乡建设厅官方网站百度竞价广告投放
  • 企业手机网站建设平台博物馆网站建设情况说明
  • 免费拿项目做的网站东莞高端品牌网站建设
  • 2018企业网站优化应该怎么做网站h1标签怎么做
  • 企业网站自助建站上海东莞常平学校网站建设
  • 如何申请个人网站wordpress 红色模版
  • 开发网站五个阶段手机优化怎么得100分
  • 织梦做企业网站教程php mysql做网站
  • 鸿运通网站建设手表网站哪家好
  • 云服务器网站建站国外做彩票网站违法吗
  • 网站收录查询代做效果图网站哪家好
  • 龙岗商城网站建设教程作文网推荐
  • 建设网站的知识自己怎么制作一个公众号
  • 建设网站昌都地区智能网站搭建