用队列在 C++ 中实现堆栈


假定我们想用队列实现一个堆栈。那么,我们必须为这个堆栈定义如下方法。

  • push(x) − 将 x 压入堆栈中。

  • pop() − 删除堆栈中顶部元素并返回。

  • top() − 返回堆栈中顶部元素。

  • empty() − 返回堆栈是否为空。

因此,如果我们调用 push(10)、push(20) 这两个函数,然后调用 pop()、pop(),则输出将是 20、10

为了解决这个问题,我们将遵循以下步骤 −

  • 定义一个双端队列 q

  • 定义一个函数 push(),它将获取 x

  • 将 x 插入到 q 的开头

  • 定义一个函数 pop()

  • k := q 的第一个元素

  • 删除 q 的前端元素

  • 返回 k

  • 定义一个函数 top()

  • 返回 q 的第一个元素

  • 定义一个函数 empty()

  • 如果 q 为空,则 −

    • 返回 true

  • 否则

    • 返回 false

示例 

让我们看看以下实现,以便对之有一个更好的理解 −

在线演示

#include <bits/stdc++.h>
using namespace std;
class MyStack {
private:
   deque<int> q;
public:
   void push(int x){
      q.push_front(x);
   }
   int pop(){
      int k = q.front();
      q.pop_front();
      return k;
   }
   int top(){
      return q.front();
   }
   bool empty(){
      if (q.empty())
         return true;
      else
         return false;
   }
};
main(){
   MyStack ob;
   ob.push(10);
   ob.push(20);
   cout << (ob.pop()) << endl;
   cout << (ob.pop()) << endl;
}

输入

push(10),push(20),pop(),pop()

输出

20
10

更新于: 2020-06-10

3 千次以上浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.