2力扣题做题笔记及复盘--232. 用栈实现队列(栈)

232. 用栈实现队列 - 力扣(LeetCode)

1、使用栈实现队列的下列操作:

push()-- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。

 

2、思路:

主要在弹出元素方法中,栈的方式是先进后出,队列的方式的先进先出,那要将栈实现队列的效果,就需要两个栈来倒数据,第一个栈存储数据,第二个栈从第一个栈中倒过来数据,形成的效果就是第二栈的数据本来是第一个进的,倒过来后就变成第一个出的了。

 

3、代码:

class MyQueue {
        Stack<Integer> stackIn;
        Stack<Integer> stackOut;
    public MyQueue() {
             stackIn = new Stack<>();
             stackOut = new Stack<>();   
    }
    
    public void push(int x) {
        stackIn.push(x);
    }
    
    public int pop() {
        dumpStackOut();
        return stackOut.pop();
    }
    
    public int peek() {
        dumpStackOut();
        return stackOut.peek();
    }
    
    public boolean empty() {
        return stackOut.isEmpty() && stackIn.isEmpty();
    }
    //将StackIn 倒入到 StackOut中
    public void dumpStackOut(){
        if(!stackOut.isEmpty()) return;
        while(!stackIn.isEmpty()){
            stackOut.push(stackIn.pop());
        }
    }
}

4、总结

这里主要是对栈数据结构的应用。

 

posted @ 2022-05-22 17:22  jason饼干大怪兽  阅读(9)  评论(0)    收藏  举报