用队列实现栈-力扣

本题是使用队列来实现栈,在栈实现队列时,我们使用了输入栈和输出栈来调整输出顺序,但时队列不同,队列元素先入先出,即使使用两个队列,也没法调整到先入后出。因此做法是依次将队列元素出队,然后再让其入队,当出队元素是 最初的队列 最后一个元素时,它就是栈顶元素。代码如下:

在top()函数中,可以直接返回 que.back(),也能直接得到队列的最后一个元素。

cpp 复制代码
class MyStack {
public:
    MyStack() {

    }
    
    void push(int x) {
        que.push(x);
    }
    
    int pop() {
        int size = que.size() - 1;
        while(size--){
            que.push(que.front());
            que.pop();
        }
        int result = que.front();
        que.pop();
        return result;
    }
    
    int top() {
        int result = this->pop();
        this->push(result);
        return result;
    }
    
    bool empty() {
        return que.empty();
    }
private:
    queue<int> que;
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */
相关推荐
Fcy64817 分钟前
算法基础详解(五)二分算法——二分查找与二分答案
算法·二分算法
郭涤生20 分钟前
原子操作的内存顺序
c++
ALex_zry33 分钟前
C++模板元编程实战技巧
网络·c++·windows
SteveSenna35 分钟前
强化学习4.1:基于价值——Q-learning
人工智能·学习·算法·机器人
少许极端36 分钟前
算法奇妙屋(四十四)-贪心算法学习之路11
java·学习·算法·贪心算法
子琦啊36 分钟前
【算法复习】数组与双指针篇
javascript·算法
ambition2024239 分钟前
斐波那契取模问题的深入分析:为什么提前取模是关键的
c语言·数据结构·c++·算法·图论
艾莉丝努力练剑39 分钟前
C++ 核心编程练习:从基础语法到递归、重载与宏定义
linux·运维·服务器·c语言·c++·学习
牢姐与蒯1 小时前
模板的进阶
c++
小樱花的樱花1 小时前
1 项目概述
开发语言·c++·qt·ui