LeetCode 232用栈实现队列
题目链接:232. 用栈实现队列 - 力扣(LeetCode)
class MyQueue {
private:
stack<int> stIn;
stack<int> stOut;
public:
MyQueue() {
}
void push(int x) {
stIn.push(x);
}
int pop() {
if (stOut.empty()) {
while (!stIn.empty()) {
int num = stIn.top(); stIn.pop();
stOut.push(num);
}
}
//if (!stOut.empty()) {//题目说明保证一切操作都是合法的
int ans = stOut.top();
stOut.pop();
return ans;
//}
}
int peek() {//pop和peek的返回值一样,只是pop有弹出操作,peek没有
int ans = this->pop();//直接使用已有的pop函数
stOut.push(ans);
return ans;
}
bool empty() {
return (stIn.empty() && stOut.empty());
}
};
LeetCode 225用队列实现栈
题目链接:225. 用队列实现栈 - 力扣(LeetCode)
class MyStack {
private:
queue<int> que;//queue末尾添加元素,头部移除元素
public:
MyStack() {
}
void push(int x) {
que.push(x);
}
int pop() {
int size = que.size();
while (--size) {
que.push(que.front());
que.pop();
}
int ans = que.front();
que.pop();
return ans;
}
int top() {
return que.back();
}
bool empty() {
return que.empty();
}
};