232. 用栈实现队列
public:
stack<int> stIn;
stack<int> stOut;
MyQueue() {
}
void push(int x) {
stIn.push(x);
}
int pop() {
//如果为空则将stIn的每个元素出栈,然后入栈
if (stOut.empty()) {
while (!stIn.empty()) {
int res = stIn.top();
stIn.pop();
stOut.push(res);
}
//如果用于输出的栈不为空,直接输出, 注意 pop()函数没有返回值
}
int res = stOut.top();
stOut.pop();
return res;
}
int peek() {
int res = this->pop();
stOut.push(res);
return res;
}
bool empty() {
if (stIn.empty() && stOut.empty()) return true;
return false;
}
};
225. 用队列实现栈
class MyStack {
public:
queue<int> mq;
MyStack() {
}
void push(int x) {
mq.push(x);
}
int pop() {
//获取队列的长度
int size = mq.size();
//除了最后一个,其他元素都出队列后重新进入队列
size--;
while(size--) {
int res = mq.front();
mq.pop();
mq.push(res);
}
int res = mq.front();
mq.pop();
return res;
}
int top() {
return mq.back();
}
bool empty() {
return mq.empty();
}
};