用两个栈实现队列
题目描述
请用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
队列是先进先出的,而栈是先进后出。
用两个栈实现队列,首先将数据用push()存入第一个栈stack1中,在将stack1的元素一个一个用pop()拿出来,按顺序存入第二个栈stack2中。
假设我们向模拟的队列插入数 a,b,c ,首先将数据插入 stack1,此时的栈情况为:
栈 stack1:{a,b,c}
栈 stack2:{}
将栈stack1的数据拿出来,顺序是{c,b,a}
将拿出来的再按顺序存入栈 stack2中,数据顺序就是{c,b,a}
接下来直接将stack2中的数据pop出来,顺序是{a,b,c}。
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.size() <= 0 ){
while(stack1.size()!=0){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}