题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解决办法:
队列先进先出,栈先进后出(stack1和stack2)
其实主要要注意的点是:
①在添加时直接往第一个添加即可
②在删除时分情况,
第一:如果stack2不为空,则直接弹出stack2中的元素即可,因为stack2中的肯定要比stack1中的元素加进来早
第二:如果stack2是空的,则把stack1中的元素一一弹出并加入到stack2中,之后再弹出
如图测试数据:(结合下面代码看)
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.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return stack2.pop();
}else{
return stack2.pop();
}
} public static void main(String[] args) {
Solution s = new Solution();
//①
s.push(1);
//②
s.push(2);
//③
s.push(3);
//④
int a = s.pop();
System.out.println(a);
//⑤
int b = s.pop();
System.out.println(b);
//⑥
s.push(4);
//⑦
int c = s.pop();
System.out.println(c);
//⑧
s.push(5);
//⑨
int d = s.pop();
System.out.println(d);
//⑩
int e = s.pop();
System.out.println(e);
}
}