队列为先入先出,栈为先入后出。

B实现A的倒序排列

增加元素即在A中栈顶增加

删除元素即将A倒序再删除栈顶元素,即删除B中的栈顶元素

如果A本身为空则无元素,返回-1;

如果A本身有元素,则循环输入到B中,然后再从B中输出栈顶元素

如果B本身有元素,那么直接输出栈顶元素

(这种情况一开始没懂,当栈b不是空时,会直接返回栈b的栈顶元素也就是队首元素,直到栈b为空,再次把栈a中的元素倒序入b。

那么假设是12345

A:12345

B:54321

新加元素6,那么A就会改变

A:6,如果此时没有把B中的先删,那么就会得到6,而不是1

所以得先将B中的先删,才能得到队首元素,直到空了,再把A中的倒序入B)

class CQueue {LinkedList<Integer> A = new LinkedList<Integer>(); ;LinkedList<Integer> B = new LinkedList<Integer>();;public CQueue() {A = new LinkedList<Integer>();B = new LinkedList<Integer>();}public void appendTail(int value) {A.addLast(value);}public int deleteHead() {if(B.isEmpty() == false) return B.removeLast();if(A.isEmpty() == true) return -1;while(A.isEmpty() == false)B.addLast(A.removeLast());return B.removeLast(); }
}/*** Your CQueue object will be instantiated and called as such:* CQueue obj = new CQueue();* obj.appendTail(value);* int param_2 = obj.deleteHead();*/

07. 用两个栈实现队列相关推荐

  1. 【剑指offer-Java版】07用两个栈实现队列

    两个栈实现一个队列:stack_1 stack_2 入队操作:直接入stack_1 出队操作:如果stack_2不为空,那么从其中弹出一个作为出队元素,否则将stack_1元素全部依次压入stack_ ...

  2. 剑指offer:面试题09. 用两个栈实现队列

    题目:用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有 ...

  3. 剑指offer_第5题_用两个栈实现队列

    题目描述 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 理解 关于栈 什么是栈 栈的抽象数据类型 Python实现栈 关于队列 什么是队列 队列抽象数据类型 Pyt ...

  4. 《LeetCode力扣练习》剑指 Offer 09. 用两个栈实现队列 Java

    <LeetCode力扣练习>剑指 Offer 09. 用两个栈实现队列 Java 一.资源 题目: 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 de ...

  5. 剑指Offer #05 用两个栈实现队列(模拟)

    题目来源:牛客网-剑指Offer专题 题目地址:用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题目解析 首先,我们需要知道一下基本知 ...

  6. 【干货】容器适配器实现两个栈模拟队列

    用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream ...

  7. 剑指offer第二版-9.用两个栈实现队列

    描述:使用两个栈实现一个队列.队列中实现尾部插入和头部删除函数. 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对s ...

  8. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  9. 《剑指offer》第九题(用两个栈实现队列)

    // 面试题:用两个栈实现队列 // 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的 ...

最新文章

  1. 你知道select count(*)底层究竟干了啥么?
  2. 【统计学习方法】K近邻对鸢尾花(iris)数据集进行多分类
  3. linux 字符串string操作(截取、提取、长度计算等)
  4. mysql relay bin 主库_MySQL主库binlog(master-log)与从库relay-log关系代码详解
  5. elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]
  6. 【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
  7. k-substrings(CF961F)
  8. Asterisk学习进阶-3
  9. 解决pytorch RuntimeError: expected scalar type XXXX but found XXXX
  10. 【Head First 设计模式】-简单工厂模式读后总结
  11. SAP License:把握好集成测试大关,ERP就成功了一大半
  12. 优雅的使用Python之软件管理
  13. javascript 高级程序设计第三版中文和JavaScript权威指南高清pdf
  14. Ubuntu 解决WPS缺少宋体,微软雅黑等中文字体
  15. TIM网盘批量下载方法
  16. OSPF(七)OSPF特殊区域之NSSA和Totally NSSA详解及配置
  17. 【贪玩巴斯】一文学会检索三要素:检索字段、检索词、检索算法检索(二)——「一文学会检索三要素:检索字段、检索词、检索算法」 2021-09-18
  18. 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月23日
  19. 干掉广告和钓鱼,这款神器绝了!
  20. 嵌入式linux音频播放器设计,基于嵌入式Linux下Madplay音频播放器设计论文.docx

热门文章

  1. C++ | 引用变量
  2. Java如何把1变成0001
  3. 选课系统 - 数据库查询(四)
  4. matlab拼碎纸片过程,碎纸片拼接复原模型
  5. IT创业的悲惨故事《IT创业疯魔史》以及我的八卦
  6. 自恢复保险丝选型参数详解
  7. 衡量微型计算机性能的主要技术指标是,衡量计算机性能的主要技术指标是什么...
  8. 你知道百度的“框计算” 吗
  9. 【Unity】控制小球运动
  10. linux配置基于ip的虚拟主机