栈:后进后出(LIFO),顶端压入push,顶端弹出pop,一般用数组或链表实现栈。
队列:先进先出(FIFO),后端rear入队push,前端front出队pop
队列模拟栈,一个队列q,如1 2 3;栈中3为top,但是queue中1为front,3为rear
push时,先q.push(x),再把其他元素取出再按序重新压入栈中,用一个循环解决
pop时,直接从front取(eg:3),并返回该数,即可。
top就是queue的front,直接返回即可。
empty直接判断队列即可,因为是单队列。
class MyStack {
private: queue<int> q;
public:
/** Initialize your data structure here. */
MyStack() {
}
/** Push element x onto stack. */
void push(int x) {
int size = q.size();
q.push(x);
int ls;
for(int i=0;i<size;i++)
{
ls = q.front();
q.pop();
q.push(ls);
}
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
int ls = q.front();
q.pop();
return ls;
}
/** Get the top element. */
int top() {
return q.front();
}
/** Returns whether the stack is empty. */
bool empty() {
return q.empty();
}
};