数据结构-用两个栈实现队列-java版+c++版-创新互联

20. 用两个栈实现队列 - AcWing题库

站在用户的角度思考问题,与客户深入沟通,找到陆港网站设计与陆港网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册网站空间、企业邮箱。业务覆盖陆港地区。

232. 用栈实现队列

目录

1、java

2、c++


思路:

stk1——输入栈

stk2——输出栈——因为队列是先进先出,所以一旦要输出,则把输入栈中元素存入输出栈,再输出,顺序就是先进先出

不妨举一个例子:

【push,push,pop,peek,push,pop】

【1      ,2      ,null,null,  3      ,null】

1、java

java的栈中,stk.pop()——删除栈顶元素并返回栈顶元素值

java中的栈pop和peek的异同:
相同点:都返回栈顶元素的值
不同点:pop会删除栈顶的值,peek不会删除

class MyQueue {

    Dequestk1=new LinkedList<>();
    Dequestk2=new LinkedList<>();
    
    public void push(int x) {
        stk1.push(x);
    }
    
    public int pop() {
        if(stk2.isEmpty())
        {
            while(!stk1.isEmpty())
                stk2.push(stk1.pop());
        }
        return stk2.pop();
    }
    
    public int peek() {
        if(stk2.isEmpty())
        {
            while(!stk1.isEmpty())
                stk2.push(stk1.pop());
        }
        return stk2.peek();
    }
    
    public boolean empty() {
        return stk1.isEmpty()&&stk2.isEmpty();
    }
}

2、c++

stk.pop()——仅仅删除栈顶元素

class MyQueue {
public:
    stackstk1,stk2;
    
    void push(int x) {
        stk1.push(x);
    }
    
    int pop() {
        if(stk2.empty())
        {
            while(!stk1.empty())
            {
                stk2.push(stk1.top());
                stk1.pop();
            }
        }
        int x=stk2.top();
        stk2.pop();
        return x;
    }
    
    int peek() {
        int x=this->pop();
        stk2.push(x);
        return x;
    }
    
    bool empty() {
        return stk1.empty()&&stk2.empty();
    }
};

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:数据结构-用两个栈实现队列-java版+c++版-创新互联
转载来源:http://myzitong.com/article/dpjodg.html