栈与队列|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)

三、总结

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

就是先进先出和先进后出

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

多敲代码咯!

相关推荐
_Soy_Milk6 分钟前
Golang,Let‘s GO!
开发语言·后端·golang
1-programmer10 分钟前
【Go研究】Go语言脚本化的可行性——yaegi项目体验
开发语言·后端·golang
pumpkin8451424 分钟前
C++移动语义
开发语言·c++
重剑无锋102431 分钟前
【《python爬虫入门教程11--重剑无峰168》】
开发语言·爬虫·python
极客代码42 分钟前
Unix 域协议汇总整理
c语言·开发语言·unix·socket·unix域套接字·本地套接字
起名方面没有灵感42 分钟前
力扣23.合并K个升序链表
java·算法
啊烨疯狂学java1 小时前
0105java字节面经
java·jvm·算法
diygwcom1 小时前
php有两个数组map比较 通过id关联,number可能数量变化 比较他们之间增加修改删除
android·开发语言·php
我命由我123451 小时前
27.Java 线程间通信(synchronized 实现线程间通信、Lock 实现线程间通信)
java·开发语言·后端·java-ee·intellij-idea·juc·后端开发
sjsjs112 小时前
【数据结构-堆】力扣3066. 超过阈值的最少操作数 II
数据结构·算法·leetcode