栈 实现队列
class MyQueue {
public:
MyQueue() {
}
void push(int x) {
inStack.push(x);
}
int pop() {
if(outStack.empty()){
while(!inStack.empty()){
outStack.push(inStack.top());
inStack.pop();
}
}
int result=outStack.top();
outStack.pop();
return result;
}
int peek() {
int res=this->pop();
outStack.push(res);
return res;
}
bool empty() {
return inStack.empty()&&outStack.empty();
}
private:
stack<int> inStack;
stack<int> outStack;
};
队列实现栈
class MyStack {
public:
MyStack() {
}
void push(int x) {
que1.push(x);
}
//使用辅助队列que2;将que1存的值复制到que2到只剩最后一个元素,存储que1的front
//然后将front删除,再将que2的值传给que1,再将que2中的元素全部删除,返回存储值
int pop() {
int size=que1.size();
size--;
while(size--){
que2.push(que1.front());
que1.pop();
}
int result=que1.front();
que1.pop();
que1=que2;
while(!que2.empty()){
que2.pop();
}
return result;
}
int top() {
int ans=this->pop();
que1.push(ans);
return ans;
}
bool empty() {
return que1.empty();
}
private:
queue<int> que1;
queue<int> que2;
};