(java版剑指offer)JZ9 用两个栈实现队列
用两个栈实现队列
https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D13&difficulty=&judgeStatus=&tags=&title=&gioEnter=menu
//方法一:栈1存数据,栈2弹出数据。
import java.util.*;
import java.lang.*;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node); //栈1用于压入数据
}
//栈2用于弹出数据,实现队列的先进先出
public int pop() {
// 先判断stack2是否为空时,若为空,把栈1中的数据全部弹出压入栈2,实现逆序
if (stack2.isEmpty()){
while (!stack1.isEmpty()){ //当栈1不为空,数据一直迁移,直至栈为空
stack2.push(stack1.pop());
}
}
// 再次判断stack2,如果仍然为空,说明,栈1也没有数据了,那么就抛出异常
if (stack2.isEmpty()){
throw new RuntimeException("队列中无元素");
}
return stack2.pop(); //完成以上判断后,最后弹出栈2的值,实现先进先出
}
}