原题链接:力扣225.用队列实现栈
思路:主要就是用队列模拟栈的操作
需要注意的点就是栈和队列数据结构的区别
栈是先进后出,队列是先进先出
也就代表如果队列要模拟栈,就要对队列实现移动元素位置的操作,这个要注意
全代码:
cpp
class MyStack {
public:
MyStack() {
}
void push(int x) {// 将元素 x 压入栈顶。用单队列实现
queuea.push(x);//将x先压入队列尾
int len = queuea.size()-1;//获取队列总长度,但是减去1,因为移位置不需要移动刚添加进来的x
while (len--) {//将队列头的元素逐步添加到队列尾,就成了旧元素不变,的以新元素x开头的队列
queuea.push(queuea.front());
queuea.pop();
}
}
int pop() {//移除并返回栈顶元素
if (!queuea.empty()) {
//得到队列最先出的一个元素
int a = queuea.front();
//弹出
queuea.pop();
//返回弹出的元素
return a;
}
else {//为空返回NULL
return NULL;
}
}
int top() {//返回栈顶元素。
int a = queuea.front();
return a;
}
bool empty() {//判断是否为空,空返回true,不为空返回false
return queuea.empty();
}
private:
queue<int> queuea;
};