232. 用栈实现队列
笔记
用两个栈实现队列,一个栈用于输入,一个栈用于输出,若输出的栈为空,则将输入栈的元素全部pop出来,push到输出栈。
class MyQueue {
public:
stack<int> stIn, stOut;
MyQueue() { }
void push(int x) {
stIn.push(x);
}
int pop() {
int tem = peek();
stOut.pop();
return tem;
}
int peek() {
if (stOut.empty()) {
while (!stIn.empty()) {
int tem = stIn.top();
stIn.pop();
stOut.push(tem);
}
}
return stOut.top();
}
bool empty() {
if (stIn.size() == 0 && stOut.size() == 0) {
return true;
}
else return false;
}
};
225. 用队列实现栈
笔记
pop时依次将队列的头插入队列的尾,最后一次的就是结果。
class MyStack {
public:
queue<int> que;
MyStack() { }
void push(int x) {
que.push(x);
}
int pop() {
int size = que.size();
size--;
while (size--) {
que.push(que.front());
que.pop();
}
int result = que.front();
que.pop();
return result;
}
int top() {
return que.back();
}
bool empty() {
return que.empty();
}
};