class MyStack {
private:
queue<int> q;
public:
/** Initialize your data structure here. */
MyStack() {
}
/** Push element x onto stack. */
void push(int x) {
//用队列实现栈, 入队相当于尾插
//需要把前面的元素都出队再入队, 这样处理就模拟实现了一个栈
q.push(x);
int size = q.size() - 1;
while (size) {
//保存队头元素
int tmp = q.front();
q.pop();
q.push(tmp);
size--;
}
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
int tmp = q.front();
q.pop();
return tmp;
}
/** Get the top element. */
int top() {
return q.front();
}
/** Returns whether the stack is empty. */
bool empty() {
return q.empty();
}
};
OJ ----- LeetCode225 : 用队列实现栈
最新推荐文章于 2021-03-04 09:46:18 发布
该博客介绍了一种使用队列来模拟栈操作的方法。在`MyStack`类中,通过将元素入队和出队的特殊处理,实现了栈的push、pop、top和empty等基本操作。这种实现方式利用了队列的FIFO特性,巧妙地转化了栈的操作逻辑。
摘要由CSDN通过智能技术生成