题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:栈的特点:先进后出 。 队列特点:先进先出。自己画了画图,看的比较秦楚,大概是每次进队列操作都进stack1栈,出队列时必须先把stack1弹栈到stack2中,这样刚好就是倒过来的顺序了。
stack1 : 1 > 2 1 > 3 2 1 > .
stack2 : 3 > 2 3 > 1 2 3
所以出队时就弹出最后面进入的元素。
最重要的是,每次弹完 为了保持队列顺序必须要 再 把stack2完全弹栈到stack1中
stack 1 : 2 > 3 2 .
stack 2 : null;
代码:
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
int k=0;
public void push(int node) {
stack1.push(node);
k++;
}
public int pop() {
if(stack1.isEmpty()){
return 0;
}
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
int x = stack2.pop();
while(!stack2.isEmpty()){
stack1.push(stack2.pop());
}
return x;
}
}