代码随想录算法训练营第10天| 232.用栈实现队列 ● 225. 用队列实现栈

栈和队列

232.用栈实现队列

stack:

queue:

卡哥代码

一个入栈,一个出栈,即可模拟队列的pop操作

  • pop之前要检查出栈是否为空
    • 若为空,则排出入栈里所有的元素至出栈中
class MyQueue {
public:
    stack<int> stackIn;
    stack<int>  stackOut;
    
    MyQueue() {

    }
    
    void push(int x) {
        stackIn.push(x);
    }
    
    int pop() {
        if(stackOut.empty()){
            while( !stackIn.empty() ){
                stackOut.push(stackIn.top());
                stackIn.pop();
            }
        }
        int result = stackOut.top();
        stackOut.pop();
        return result;
        //return stackOut.pop();    //报错,因为标准的pop是void类型
    }
    
    int peek() {
        int result = this->pop();
        stackOut.push(result);
        return result;
    }
    
    bool empty() {
        return stackIn.empty() && stackOut.empty();
    }
};

225.用队列实现栈

queue:

卡哥代码

单队列法

class MyStack {
public:

    queue<int> que;

    MyStack() {

    }
    
    void push(int x) {
        que.push(x);
    }
    
    int pop() {
        int size = que.size();
        size--;
        while(size--){
            que.push(que.front());
            que.pop();
        }
        int result = que.front();
        que.pop();
        return result;
    }
    
    int top() {

        //简单写法
        return que.back();

        //简单写法
        // return this->back(); //报错:no member named 'back' in 'MyStack'
        
        /*我的写法
        int result = this->pop();
        this->push(result);
        return result;
        */ 
    }
    
    bool empty() {
        return que.empty();
    }
};
posted @   zz子木zz  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示