题目来自《剑指offer》
用两个栈实现一个队列,实现尾插和头删的功能。
基于两个数据结构的特点,不难思考出两者的交互方式。
下面以一张图说明:
代码实现
static final Stack<Integer> stack1 = new Stack<>(); static final Stack<Integer> stack2 = new Stack<>(); // 尾插 private static void appendTail(Integer i){ stack1.push(i); } //头删 private static void deleteHead(){ if(stack2.empty()){ while (!stack1.empty()){ stack2.push(stack1.peek()); stack1.pop(); } } if(!stack2.empty()){ stack2.pop(); } }