1.可以用deque直接实现
2.用两个队列queue实现
3.一个queue实现
-
1
基本操作,push_front(),pop_front(),push_back(),pop_back() -
2 两个队列
向q1中push元素,当要pop时,用一个辅助队列q2保存q1的前q1.size()-1个元素。然后再让q1=q2即可
class MyStack {
public:
/** Initialize your data structure here. */
queue<int>q1;
queue<int>q2;
MyStack() {
}
/** Push element x onto stack. */
void push(int x) {
q1.push(x);
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
q2=queue<int>();
int ans;
while(q1.size()>1){
q2.push(q1.front());
q1.pop();
}
ans=q1.back();
q1=q2;
return ans;
}
/** Get the top element. */
int top() {
return q1.back();
}
/** Returns whether the stack is empty. */
bool empty() {
return q1.empty();
}
};
- 3 一个队列
如 队列 3 5 9,需要把3,5移动到9的后面,变成 9 3 5,之后pop即可
class MyStack {
public:
/** Initialize your data structure here. */
queue<int>que;
MyStack() {
}
/** Push element x onto stack. */
void push(int x) {
que.push(x);
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
int topp=que.back();
int size=que.size()-1;
while(size){
que.push(que.front());
que.pop();
size--;
}
que.pop();
return topp;
}
/** Get the top element. */
int top() {
return que.back();
}
/** Returns whether the stack is empty. */
bool empty() {
return que.empty();
}
};
来源:CSDN
作者:WKP9418
链接:https://blog.csdn.net/qq_43179428/article/details/104145163