232.用栈实现队列
思路
两个栈实现队列
代码
class MyQueue {
public:
stack<int> stIn;
stack<int> stOut;
MyQueue() {
}
void push(int x) {
stIn.push(x);
}
int pop() {
int result;
if (stOut.empty()) {
// 输出栈为空
while(!stIn.empty()) {
int tmp = stIn.top();
stIn.pop();
stOut.push(tmp);
}
}
result = stOut.top();
stOut.pop();
return result;
}
int peek() {
int res = this -> pop();
stOut.push(res);
return res;
}
bool empty() {
if (stIn.empty() && stOut.empty()) {
return true;
}
else return false;
}
};
总结
225 用队列实现栈
思路
两个队列实现
但一个是实际使用的队列,另一个是用于备份
代码
class MyStack {
public:
queue<int> qMaster;
queue<int> qSlave;
MyStack() {
}
void push(int x) {
qMaster.push(x);
}
int pop() {
int size = qMaster.size();
size --;
while(size--) {
qSlave.push(qMaster.front());
qMaster.pop();
}
int result = qMaster.front();
qMaster.pop();
qMaster = qSlave;
while(!qSlave.empty()) {
qSlave.pop();
}
return result;
}
int top() {
return qMaster.back();
}
bool empty() {
return qMaster.empty();
}
};