用队列在 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP