题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
}
public int pop() {
}
}
思路分析
两个栈实现一个队列
栈是先进后出,队列是先进先出
我们有两个栈,我们可以使数据全部进入栈1,然后全部出栈1。
比如我们进入栈1的顺序是1、2、3、4、5、6
那么出栈1的顺序是6、5、4、3、2、1
我们让数据再次进入到栈2,入栈2顺序是6、5、4、3、2、1
出栈2的顺序就变为了1、2、3、4、5、6,我们就完成了队列操作。
源码
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() throws Exception{
if(stack1.isEmpty()&&stack2.isEmpty()){
throw new Exception("队列为空");
}
//当栈2为空,栈1不为空的时候,才可以向栈2内压入元素。
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}