①思路
本题的操作都挺简单,主要是push操作!
所以只介绍push操作
push插入元素
1.队列为空,直接插入
2.队列不为空,先插入push的元素,再将前面所有元素重新push并pop(目的:让新插入的元素位于队头)
②代码实现
class MyStack {
queue<int>q;
public:
MyStack() {}
void push(int x) {
if(q.empty()){//队列是空直接加入
q.push(x);
}
else{//队列非空。将插入的节点放在队头
int cnt = q.size();
q.push(x);
while(cnt--){//将前面的所有元素放在push元素的后面(push的元素作为队头,后续pop,top就是栈顶元素)
q.push(q.front());
q.pop();
}
}
}
int pop() {
int tmp = q.front();
q.pop();
return tmp;
}
int top() {
return q.front();
}
bool empty() {
return q.empty();
}
};