栈与队列|225.用队列实现栈

力扣题目链接

cpp 复制代码
class MyStack {
public:
    queue<int> que;
    /** Initialize your data structure here. */
    MyStack() {

    }
    /** Push element x onto stack. */
    void push(int x) {
        que.push(x);
    }
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        int size = que.size();
        size--;
        while (size--) { // 将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部
            que.push(que.front());
            que.pop();
        }
        int result = que.front(); // 此时弹出的元素顺序就是栈的顺序了
        que.pop();
        return result;
    }

    /** Get the top element. */
    int top() {
        return que.back();
    }

    /** Returns whether the stack is empty. */
    bool empty() {
        return que.empty();
    }
};

这是c++优化后的解题,只用一个队列求解。

一、出错点

主要是代码实现部分容易出错,思路倒是清晰易懂。

pop()部分则是重点的理解思路

二、理解后的思路

一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

代码随想录 (programmercarl.com)

三、总结

队列和栈的思路还是好理解的,

就是先进先出和先进后出

所以,我们重点要掌握的就是它的代码实现部分~

多敲代码咯!

相关推荐
大鹏说大话2 分钟前
后端开发指南:同步与异步接口的选型策略与实战场景
算法
Book思议-2 分钟前
【数据结构实战】双向链表:删除节点
c语言·数据结构·算法·链表
枫叶丹43 分钟前
【HarmonyOS 6.0】使用PAC脚本灵活管理网络连接
开发语言·网络安全·华为·信息与通信·harmonyos
雾隐潇湘4 分钟前
第三章 流程控制语句
开发语言·python
hnlgzb5 分钟前
kotlin安卓app中,当一个类继承ViewModel类的时候,这个类是想干什么?
android·开发语言·kotlin
Mr Aokey7 分钟前
快速入门 Spring Boot 拦截器、统一响应格式和全局异常处理
java·开发语言·aop·拦截器
y = xⁿ8 分钟前
【LeetCodehot100】 T543:二叉树的直径 T102:二叉树的层序遍历
算法
瓦哥架构实战8 分钟前
CentOS 7 编译安装 Python 3.9 解决 SSL 模块缺失问题
开发语言·python
敲上瘾9 分钟前
位图与布隆过滤器:原理、实现与海量数据处理方案
大数据·数据结构·算法·位图·布隆过滤器
宵时待雨16 分钟前
C++笔记归纳13:map & set
开发语言·数据结构·c++·笔记·算法