用C++写出上述问题的mystack.cpp
时间: 2024-03-26 13:35:10 浏览: 110
最近对问题.cpp
好的,以下是题目所述的mystack.cpp的完整代码:
```cpp
#include "mystack.h"
mystack::mystack() {
while (!q1.empty()) {
q1.pop();
}
while (!q2.empty()) {
q2.pop();
}
}
void mystack::push(int x) {
q1.push(x);
}
int mystack::pop() {
if (empty()) {
return -1;
}
while (q1.size() > 1) {
q2.push(q1.front());
q1.pop();
}
int res = q1.front();
q1.pop();
swap(q1, q2);
return res;
}
int mystack::top() {
if (empty()) {
return -1;
}
while (q1.size() > 1) {
q2.push(q1.front());
q1.pop();
}
int res = q1.front();
q2.push(q1.front());
q1.pop();
swap(q1, q2);
return res;
}
bool mystack::empty() {
return q1.empty();
}
```
其中,构造函数中使用while循环将队列q1和q2清空,而push、pop、top和empty函数的实现则分别对应题目中的步骤3-6。需要注意的是,pop和top函数在栈为空时应该返回-1,因此需要在函数中添加相关的判断语句。
希望对你有所帮助。
阅读全文