题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路:
一系列顺序的数据元素经过两轮入栈出栈操作后顺序不变。
代码:
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>(); //第一个栈
Stack<Integer> stack2 = new Stack<Integer>(); //第二个栈
public void push(int node) {
if(stack2.isEmpty())
{
//如果栈2为空则直接将数据入栈1
stack1.push(node);
}
else
{
//否者,将栈2的数据依次出栈放入栈1
while(!stack2.isEmpty())
{
stack1.push(stack2.pop());
}
//再将数据压入栈1
stack1.push(node);
}
}
public Integer pop() {
if(stack1.isEmpty() && stack2.isEmpty())
{
return null;
}
if(!stack1.isEmpty())
{
//将栈1的数据依次出栈放入栈2
while(!stack1.isEmpty())
{
stack2.push(stack1.pop());
}
//再弹出栈2的栈顶元素
return stack2.pop();
}
else
{
return stack2.pop();
}
}
}
总结:
利用栈的后进先出的特性。