力扣225用队列实现栈(C++)
思路
其实这道题目只用一个队列就够了。
1、void push(int x) 将元素 x 压入栈顶:
que.push(x);把元素从队尾插入队列中即可,相当于入栈。
2、int pop() 移除并返回栈顶元素:
计算出size为队列的长度。我们可以让队列的头部元素删除并添加到队列尾部,这样循环size-1次时,原先队列的尾部元素就变成了新队列的头部元素,我们让这个元素出队,就相当于出栈。
3、int top() 返回栈顶元素:
return que.back();返回队列的尾部元素,也就返回栈顶元素。
4、boolean empty() 如果栈是空的,返回 true ;否则,返回 false :
return que.empty();
代码如下
class MyStack
{
public:
queue<int> que;
MyStack()
{
}
void push(int x)
{
que.push(x);
}
int pop()
{
int size = que.size() - 1;
while (size--) //除了队列的尾部元素,队列的头部元素依次删除并添加到尾部
{
que.push(que.front());
que.pop();
}
int result = que.front(); //此时弹出的元素顺序就是名义上的栈元素的顺序了
que.pop();
return result;
}
int top()
{
return que.back();
}
bool empty()
{
return que.empty();
}
};
代码运行结果