题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
import java.util.Stack;
public class TestStackToQueue {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
/**
* 入栈--> 二二二】【二二二 -->出栈
* 左边stack1 右边stack2,两个栈一起模拟一个队列
* 入栈只到stack1,出栈只从stack2出
* 只要stack2为空,就依次把stack1元素出栈然后入到stack2,则顺序颠倒,刚好符合队列定义
*/
public int pop() {
if (stack2.isEmpty()) {
while (!stack1.empty()) {// stack1元素倒序入stack2
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
public static void main(String[] args) {
TestStackToQueue queue = new TestStackToQueue();
queue.push(1);
queue.push(2);
queue.push(3);
System.out.println(queue.pop());
System.out.println(queue.pop());
queue.push(4);
System.out.println(queue.pop());
queue.push(5);
System.out.println(queue.pop());
System.out.println(queue.pop());
}
}