用两个栈实现一个队列
时间: 2024-10-18 22:23:52 浏览: 33
用两个栈实现一个队列的方法是,一个栈用于入队列操作,另一个栈用于出队列操作。具体实现方法如下:
1. 入队列操作时,将元素压入第一个栈中。
2. 出队列操作时,先检查第二个栈是否为空,如果不为空,则直接从第二个栈中弹出元素;如果为空,则将第一个栈中的所有元素依次弹出并压入第二个栈中,再从第二个栈中弹出元素。
这样就可以用两个栈实现一个队列了。
代码实现如下:
```
class MyQueue {
public:
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
s1.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
if (s2.empty()) {
while (!s1.empty()) {
s2.push(s1.top());
s1.pop();
}
}
int res = s2.top();
s2.pop();
return res;
}
/** Get the front element. */
int peek() {
if (s2.empty()) {
while (!s1.empty()) {
s2.push(s1.top());
s1.pop();
}
}
return s2.top();
}
/** Returns whether the queue is empty. */
bool empty() {
return s1.empty() && s2.empty();
}
private:
stack<int> s1, s2;
};
```
阅读全文