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

假设我们要使用队列实现一个堆栈。我们必须为堆栈定义这些方法。

  • push(x)-将x压入堆栈。

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

  • top()-返回栈顶元素。

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

所以,如果我们调用的函数推(10),推(20),然后调用pop()pop(),则输出将是20,10

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

  • 定义一个双端队列q

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

  • 在q的开头插入x

  • 定义功能 pop()

  • k:= q的第一个元素

  • 从q删除前元素

  • 返回k

  • 定义功能 top()

  • 返回q的第一个元素

  • 定义功能 empty()

  • 如果q为空,则-

    • 返回真

  • 除此以外

    • 返回假

例 

让我们看下面的实现以更好地理解-

#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