3.如何用栈实现队列的功能
实现思想:
- 两个栈,一个栈A用作队列的入口,负责插入新元素,另一个栈B用作队列的出口,负责移除元素
- 先对栈A进行入栈操作,顺序为1,2,3,然后出栈,顺序为3,2,1
- 再按照出栈的顺序3,2,1向栈B入栈,然后出栈,出队操作是从栈B中弹出元素
private Stack<Integer> stackA = new Stack<Integer>();
private Stack<Integer> stackB = new Stack<Integer>();
/**
* 入队操作
* @param element 入队的元素
*/
public void enQueue(int element) {
stackA.push(element);
}
/**
* 出队操作
*/
public Integer deQueue() {
if (stackB.isEmpty()) {
if (stackA.isEmpty()) {
return null;
}
transfer();
}
return stackB.pop();
}
/**
* 栈A元素转移到栈B
*/
private void transfer() {
while (!stackA.isEmpty()) {
stackB.push(stackA.pop());
}
}