我们都知道栈是先进后出的,队列是先进先出的,现在要用两个栈去实现一个队列。
解题思路:两个栈分别为A、B,首先将元素全部入栈到A中,然后在将A栈中元素全部出栈,将出栈元素进入B栈中。
比如元素a、b、c进A栈,然后出栈进入到B栈中。
此时若B栈内元素出栈,可以看出其出栈顺序为a、b、c即为最开始的进栈顺序,即实现了先进先出。
以下是代码具体是实现
import java.util.Stack;
public class Solution {
Stack<Integer> stackA = new Stack<Integer>();
Stack<Integer> stackB = new Stack<Integer>();
public void push(int node) {
//当栈B不为空时,需要先把栈B里元素出栈进入到A中
while(!stackB.isEmpty())
{
stackA.push(stackB.pop());
}
stackA.push(node);
//此处即为上图A出栈进入B
while(!stackA.isEmpty())
{
stackB.push(stackA.pop());
}
}
public int pop() {
return stackB.pop();
}
}