本题有坑!注意理解题,题目没有要求,可以使用两个栈来实现队列
C++
struct TwoStacksQueue {
public:
stack<int> push, pop;
/**
* Push栈向Pop倒数据
* 【注】pop栈不为空 不能操作
*/
void pushToPop() {
if (pop.empty()) {
while (!push.empty()) {
pop.push(push.top());
push.pop();
}
}
}
void add(int newValue) {
push.push(newValue);
pushToPop();
}
int poll() {
if (push.empty() && pop.empty()) {
cout << "Queue is empty!";
return -1;
}
pushToPop();
int value = pop.top();
pop.pop();
return value;
}
int peek() {
if (push.empty() && pop.empty()) {
cout << "Queue is empty!";
return -1;
}
pushToPop();
return pop.top();
}
};
C++ | Java |
---|