在 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