题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
 
解题思路:
1,整体思路是元素先依次进入栈1,再从栈1依次弹出到栈2,然后弹出栈2顶部的元素,整个过程就是一个队列的先进先出
2,但是在交换元素的时候需要判断两个栈的元素情况:
“进队列时”,队列中是还还有元素,若有,说明栈2中的元素不为空,此时就先将栈2的元素倒回到栈1 中,保持在“进队列状态”。
“出队列时”,将栈1的元素全部弹到栈2中,保持在“出队列状态”。
所以要做的判断是,进时,栈2是否为空,不为空,则栈2元素倒回到栈1,出时,将栈1元素全部弹到栈2中,直到栈1为空。
 
代码实现:

import java.util.Stack;

public class StackToQueue {

Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();

public void push(int node) {
stack1.push(node);
}

public int pop() {
if (stack1.isEmpty()&&stack2.isEmpty()) {
throw new RuntimeException("Queue is empty!");
}else {
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
}

return stack2.pop();

}
}

最新文章

  1. 关于&lt;textArea&gt;控件下显示不出其它控件
  2. jquery 中一些 特殊方法 的特殊使用 一览表
  3. Apache+tomcat+mod_jk+centos6.2负载均衡集群配置--转载
  4. C# 引用SHDocVw 实现模拟网页操作
  5. 什麼是 N-key 與按鍵衝突?原理說明、改善技術、選購注意完全解析
  6. AC日记——【模板】字符串哈希 洛谷 3370
  7. Spring学习一
  8. linux下的Shell编程(5)循环
  9. Day71Django基础
  10. spring-boot(七) 随机端口
  11. Docker Swarm 服务版本更新与回滚
  12. JDBC操作数据库步骤
  13. 不同CSS技术及其CSS性能
  14. bzoj1215
  15. poj3349(hash table)
  16. Web前端性能优化的三个偏方
  17. Spark 源码解析 : DAGScheduler中的DAG划分与提交
  18. hihocoder1479 三等分
  19. 【剑指offer】输入一颗二叉树的根节点,判断是不是平衡二叉树,C++实现
  20. django1.11+xadmin的搭建

热门文章

  1. Java NStruct
  2. js递归算法1+ 2+3.....100的和
  3. selenium中的alter弹框
  4. java利用itext导出pdf
  5. v-echart 按需加载
  6. java排序 冒泡?+插入排序
  7. nio、bio区别,应运场景
  8. Could not find a version that satisfies the requirement PIL
  9. Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
  10. 利用Python代码编写计算器小程序