225. 用队列实现栈
单队列法
一个队列的实现,只需要在插入时重新调整元素顺序即可
每次入队都把队尾之前的元素重新移到后边,队内顺序永远是实际入队顺序的逆序:
https://leetcode-cn.com/problems/implement-stack-using-queues/solution/cde-san-chong-shi-xian-shi-yong-stdqueue-by-eric-3/
class MyStack {
public:
/** Initialize your data structure here. */
MyStack() {
q=new queue<int>;
}
/** Push element x onto stack. */
void push(int x) {
this->q->push(x);
int sz=this->q->size();
while(sz>1){
this->q->push(this->q->front());
this->q->pop();
sz--;
}
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
int front=this->q->front();
this->q->pop();
return front;
}
/** Get the top element. */
int top() {
int front=this->q->front();
return front;
}
/** Returns whether the stack is empty. */
bool empty() {
return this->q->empty();
}
private:
queue<int>* q;
};