在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