自学内容网 自学内容网

代码随想录-栈和队列-用栈实现队列

问题描述

题目描述中有说不存在空栈的pop和peek,所以无需判断这个

解析

重点在于思路,代码白给。

要用栈实现队列,肯定是两个栈才可以。一个做入队操作,一个做出队操作。

首先入队简单,往栈里加就完事了。

出队复杂,要从出栈的栈里取,而且当出栈的栈是空的时候,要把入队的栈的元素放到出队的栈中。

代码

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() {
        isDumpStackIn();
        return stackOut.pop();
    }
    
    public int peek() {
        isDumpStackIn();
        return stackOut.peek();
    }
    
    public boolean empty() {
        return stackIn.isEmpty() && stackOut.isEmpty();
    }

    public void isDumpStackIn(){
        if(!stackOut.isEmpty()){
            return ;
        }
        while(!stackIn.isEmpty()){
            stackOut.push(stackIn.pop());
        }
    }
}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */


原文地址:https://blog.csdn.net/Griezmann_7/article/details/143652438

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!