3.5 Implement a MyQueue class which implements a queue using two stacks.
template <typename T>
class MyQueue {
private:
stack<T> oldest, newest;
void shiftStacks() {
if (oldest.empty()) {
while (!newest.empty()) {
oldest.push(newest.top());
newest.pop();
}
}
}
public:
bool empty() const {
return oldest.empty() && newest.empty();
}
size_t size() const {
return oldest.size() + newest.size();
}
const T& front() {
shiftStacks();
return oldest.top();
}
void push(const T &x) {
newest.push(x);
}
void pop() {
shiftStacks();
oldest.pop();
}
};
本文介绍了一种使用两个栈来实现队列的方法。通过在两个栈之间转移元素,可以实现在队列尾部添加元素和从队列头部移除元素的操作。此方法巧妙地利用了栈的特性来达到队列的功能。
367

被折叠的 条评论
为什么被折叠?



