用两个栈实现队列
来源:互联网 发布:网络打鱼游戏平台 编辑:程序博客网 时间:2024/05/28 06:08
编写一个类,用两个栈实现一个队列,支持队列的基本操作(add,poll,peek)
//编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)import java.util.Stack;public class TwoStackQueue{ Stack <Integer> stack1; //一个栈用于数据的压入 Stack <Integer> stack2; //一个栈用于数据的弹出 public TwoStackQueue() { stack1=new Stack<Integer>(); stack2=new Stack<Integer>(); } //向队列中添加数据 public void add(int num) { stack1.push(num); } //从队列中弹出数据 public int poll() { if(stack2.isEmpty()&&stack1.isEmpty()) { throw new RuntimeException("Queue is Empty!"); } else if(stack2.isEmpty()) { while(!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.pop(); } //获得对列头的数据 public int peek() { if(stack2.empty()&&stack1.empty()) { throw new RuntimeException("Queue is Empty!"); } else if(stack2.isEmpty()) { while(!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.peek(); } public static void main(String []args) { TwoStackQueue queue=new TwoStackQueue(); queue.add(1); queue.add(2); queue.add(3); queue.add(4); System.out.println(queue.poll()); System.out.println(queue.poll()); System.out.println(queue.peek()); }}
左神编写的代码如下:
import java.util.Stack;public class Problem_02_TwoStacksImplementQueue {public static class TwoStacksQueue {public Stack<Integer> stackPush;public Stack<Integer> stackPop;public TwoStacksQueue() {stackPush = new Stack<Integer>();stackPop = new Stack<Integer>();}public void add(int pushInt) {stackPush.push(pushInt);}public int poll() {if (stackPop.empty() && stackPush.empty()) {throw new RuntimeException("Queue is empty!");} else if (stackPop.empty()) {while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.pop();}public int peek() {if (stackPop.empty() && stackPush.empty()) {throw new RuntimeException("Queue is empty!");} else if (stackPop.empty()) {while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.peek();}}public static void main(String[] args) {TwoStacksQueue test = new TwoStacksQueue();test.add(1);test.add(2);test.add(3);System.out.println(test.peek());System.out.println(test.poll());System.out.println(test.peek());System.out.println(test.poll());System.out.println(test.peek());System.out.println(test.poll());}}
阅读全文
0 0
- 用两个栈实现队列 & 用两个队列实现栈
- 用两个队列实现栈&用两个栈实现队列
- 用两个栈实现队列 & 两个队列实现一个栈
- 两个栈实现队列&&用两个队列实现一个栈
- 用两个栈实现队列 & 两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- Android QQ SDK分享功能接入
- 准确率(accuracy)、精确率(precision)、召回率(recall)
- 《java高并发程序设计》读书笔记(2)
- Android中view和viewGroup的区别
- 倾情大奉送--Spark入门实战系列
- 用两个栈实现队列
- JavaScript案例——图片的轮播效果、动态生成表格、下拉框左右选择以及动画效果
- JVM
- Mongodb导出 Csv 或者 Json 文件
- 34-二维数组与二维指针
- 查看、修改Xcode自带快捷代码块快捷键,及Xcode自带swift常用快捷代码块对照表
- ubuntu14.04 install sudo apt-get install gdb-arm-none-eabi err
- 大型网站之分布式会话管理
- swiper隐藏后再显示不会触发自动播放解决办法