import java.util.Stack;
/**
* 剑指offer面试题7:用两个栈实现队列
*
* 题目:用两个栈实现一个队列。完成队列的Push和Pop操作。队列的元素为int类型。
*
* 考查:对栈和队列的理解,栈是先进后出,队列是先进先出
*
* 思路:第一准备两个栈用于实现队列分别为instack和outstack;
* 第二当有新元素入队时,将其压入instack中;
* 第三当需要出队时,判断outstack是否为空,若是,将instack中的元素逐一弹出并压入outsatck中。将outstack的栈顶元素弹出.
* 若不为空,直接弹出outstack的栈顶元素。
*
* 总结:1.组合使用两个栈可以实现队列。
* 2.两个栈实现的队列其操作的时间复杂度能够达到O(1)。
* 3.两个栈实现队列的方法复用栈数据结构,实现过程简单且高效
*/
public class TwoStackGenerateQueue {
static Stack<Integer> inStack = new Stack<Integer>();
static Stack<Integer> outStack = new Stack<Integer>();
public static void push(int node) {
inStack.push(node);
}
public static int pop() {
if(outStack.isEmpty()) {
while(!inStack.isEmpty()) {
outStack.push(inStack.pop());
}
}
if(outStack.isEmpty()) {
return -1;
}
return outStack.pop().intValue();
}
public static void main(String[] args) {
push(1);
push(2);
push(3);
System.out.println(pop());
System.out.println(pop());
System.out.println(pop());
System.out.println(pop());
}
}
剑指offer-----用两个栈实现队列
猜你喜欢
转载自blog.csdn.net/yb1020368306/article/details/81385865
今日推荐
周排行