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

c++server side programmingprogramming更新于 2025/6/25 16:52:17

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

  • 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

相关文章