假设我们要使用队列实现一个堆栈。我们必须为堆栈定义这些方法。
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