两栈一队列
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
方法:通过两个栈实现一个队列,可以让栈1作为入队的容器,栈2作为出队的容器。在出队时,栈2为空(栈2除了进行删除操作,其他时候都需要保持空,这样入队时不会形成数据的混乱),把栈1的元素都压入栈2,再弹出栈顶元素,完成以上操作之后,把栈2的元素全都出栈压入栈1,这时候可以保证栈2为空。在保证栈2为空的前提下,入队操作就直接在栈1进行入栈即可,无需再做另外的判断。
import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node); } public int pop() { emptyStack2(stack1,stack2); emptyStack2(stack2,stack1); int num=stack2.pop(); emptyStack2(stack1,stack2); return num; } public void emptyStack2(Stack stack1,Stack stack2){ while(!stack2.isEmpty()){ stack1.push(stack2.pop()); } } }#21天打卡剑指offer##Java#