思路:一个栈用户存入入队操作,另一个用来反转,边界条件是,用于反转的栈必须为空。
package offerPractical;
import java.util.Stack;
//用两个栈实现队列的进队和出队操作
public class StackAndQueue {
Stack<Integer> stack1 = new Stack<Integer>();//stack1 用于进队操作
Stack<Integer> stack2 = new Stack<Integer>();//stack2 用于出队操作
public void in(int i) {
stack1.push(i);
}
public int out() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
return stack2.pop();
}else {
return stack2.pop();
}
}
public static void main(String[] args) {
//进队操作
StackAndQueue sq=new StackAndQueue();
sq.in(1);
sq.in(3);
System.out.println(sq.out());
sq.in(4);
System.out.println(sq.out());
}
}