用两个栈来实现队列
来源:互联网 发布:linux执行sql文件 编辑:程序博客网 时间:2024/03/29 17:47
用两个栈来实现队列
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:
栈1用来进队列,栈2用来出队列
代码:
1.原始版
import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { while(!stack2.empty()){ stack1.push(stack2.pop()); } stack1.push(node); while(!stack1.empty()){ stack2.push(stack1.pop()); } } public int pop() { while(!stack1.empty()){ stack2.push(stack1.pop()); } int i = stack2.pop(); while(!stack2.empty()){ stack1.push(stack2.pop()); } return i; }}
在原始版本中,每一次进出队列都对两个栈的数据进行更改。实际上并不需要,栈1只需负责数据的进队列操作,栈2只需负责数据的出队列操作。当栈2为空时,主动将栈1的数据取过来。
2.升级版
import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node);//只负责进数据 } public int pop() { if (stack2.empty()) { if (stack1.empty()) { throw new RuntimeException("队列已空"); } else { while (!stack1.empty()) { stack2.push(stack1.pop()); } return stack2.pop(); } } else { return stack2.pop(); } }}
0 0
- 用两个队列来实现栈
- 用两个栈来实现一个队列
- 用两个栈来实现一个队列()
- 用两个栈来实现一个队列
- 用两个栈来实现队列
- 用两个栈来实现一个队列
- 用两个栈来实现一个队列
- 用两个栈来实现队列
- 用两个栈来实现一个队列
- 用两个栈来实现一个队列
- 用两个栈来实现一个队列
- 两个栈来实现队列
- 用两个栈来实现一个队列以及用两个队列来实现一个栈
- 用两个栈来实现一个队列&&用两个队列来实现栈
- Java实现用两个栈来实现队列
- 程序随笔:用两个栈来实现一个队列
- 【算法和数据结构】1.11--用两个栈来实现队列
- 《剑指Offer》用两个栈来实现队列
- char* const p,const char* p, char const* p 的区别
- jQuery ajax跨域请求
- 阻击外挂——《龙之谷手游》安全测试的那点事
- Hadoop的PathFilter使用
- 集训4.10-篮球赛
- 用两个栈来实现队列
- Hadoop网盘小项目实现(一)
- 在Android Studio中查看Android源码
- arcgis server 发布FeatureAccess权限的图层
- java8使用lambda对Map排序
- MySQL与安全:ACLs、账户、密码、权限、远程登录
- Linux ubuntu 基础操作(2)
- ANDROID编程规范与常用技巧
- 分割大文件