232.用栈实现队列
class MyQueue {
public:
stack<int> stIn;
stack<int> stOut;
MyQueue() {
}
void push(int x) {
stIn.push(x);
}
int pop() {
if(stOut.empty()){
while(!stIn.empty()){
stOut.push(stIn.top());
stIn.pop();
}
}
int ans=stOut.top();
stOut.pop();
return ans;
}
int peek() {
int ans=this->pop();
stOut.push(ans);
return ans;
}
bool empty() {
return stIn.empty()&&stOut.empty();
}
};
用栈来模拟队列要用到两个栈,一个是进,一个是出,用于颠倒出栈顺序
225. 用队列实现栈
class MyStack {
public:
queue<int> que;
MyStack() {
}
void push(int x) {
que.push(x);
}
int pop() {
int size=que.size()-1;
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();
}
};
和上一题类似,用队列来实现栈的功能,只需要一个队列就行,如果用两个两个队列,另一个队列就是单纯的备份功能,用于储存要删除前的元素。用一个队列就是把要删除前的全部元素重新放到队列的尾部,在把要删除的元素pop掉。栈顶的表示是top,队列的第一个出列的是front,最后一个出列的是back