学习目标:
理论基础
232.用栈实现队列
225. 用队列实现栈
学习内容:
232:避免重复代码的复制 this->成员函数
学习时间:
2022.11.5
学习产出:
用栈实现队列
class MyQueue {
public:
stack<int> stackin;
stack<int> stackout;
MyQueue() {
}
void push(int x) {
stackin.push(x);
}
int pop() {
if(stackout.empty()){
while(!stackin.empty()){
int res = stackin.top();
stackin.pop();
stackout.push(res);
}
}
int res2 = stackout.top();
stackout.pop();
return res2;
}
int peek() {
int res = this->pop();
stackout.push(res);
return res;
}
bool empty() {
return stackin.empty()&&stackout.empty();
}
};
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/
用两个队列实现栈
class MyStack {
public:
queue<int>queue1;
queue<int>queue2;
MyStack() {
}
void push(int x) {
queue1.push(x);
}
int pop() {
int size = queue1.size();
size--;
while(size--){
queue2.push(queue1.front());
queue1.pop();
}
int res= queue1.front();
queue1.pop();
queue1=queue2;
while(!queue2.empty()){
queue2.pop();
}
return res;
}
int top() {
return queue1.back();
}
bool empty() {
return queue1.empty()&&queue2.empty();
}
};
/**
* Your MyStack object will be instantiated and called as such:
* MyStack* obj = new MyStack();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->top();
* bool param_4 = obj->empty();
*/