208.用栈实现队列

使用栈实现队列的下列操作:

  • push(x) -- 将一个元素放入队列的尾部。
  • pop() -- 从队列首部移除元素。
  • peek() -- 返回队列首部的元素。
  • empty() -- 返回队列是否为空。

示例:

MyQueue queue = new MyQueue();
queue.push(1);
queue.push(2);  
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

说明:

  • 你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。

代码

class Queue {
public:
    // Push element x to the back of queue.
    void push(int x) {
        stack<int> tmp;
        while (!s.empty()) {
            tmp.push(s.top());
            s.pop();
        }
        s.push(x);
        while (!tmp.empty()) {
            s.push(tmp.top());
            tmp.pop();
        }
    }
    // Removes the element from in front of queue.
    void pop(void) {
        s.pop();
    }
    // Get the front element.
    int peek(void) {
        return s.top();
    }
    // Return whether the queue is empty.
    bool empty(void) {
        return s.empty();
    }
private:
    stack<int> s;
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 栈 栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入,...
    Jack921阅读 5,454评论 0 5
  • 栈 栈,是先进后出的线性表,标准STL的栈包括如下5种操作,设栈S:1.取出栈顶元素:S.top();2.判断栈是...
    徐凯_xp阅读 3,590评论 0 1
  • #ooc# #清水粽# 01 自从沈巍打着缘分妙不可言的旗号住到了赵云澜的对面以后,对某特调处处长的作息恐怕比他...
    alcohol小姐阅读 6,397评论 1 16
  • 故人如问且直言,故亲如问且直言。我自挥袍向西去,独走大漠出人间。 命途颠簸如草乱,寒夜惊起痴欲狂。两处生死皆不见,...
    城南左拾遗阅读 3,904评论 0 2
  • Sqoop安装配置及将mysql数据导入到hdfs中 - Stanley-Hwang学习交流分享 - 博客频道 -...
    葡萄喃喃呓语阅读 3,369评论 0 1

友情链接更多精彩内容