232. 用栈实现队列
用两个栈,两次先进后出之后就是先进先出,但在pop的时候要判断,只有出栈空的时候,才往这个栈里放,不然顺序会乱。
class MyQueue {
public:
stack<int> stack1;
stack<int> stack2;
MyQueue() {
}
void push(int x) {
stack1.push(x);
}
int pop() {
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
}
}
int res = stack2.top();
stack2.pop();
return res;
}
int peek() {
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
}
}
int res = stack2.top();
return res;
}
bool empty() {
if(stack1.empty() && stack2.empty()){
return true;
}else{
return false;
}
}
};
225. 用队列实现栈
好像队列不用专门写个size来记录,复习下队列和栈。
class MyStack {
queue<int> que;
int size=0;
public:
MyStack() {
}
void push(int x) {
que.push(x);
size++;
}
int pop() {
for(int i=0;i<size-1;i++){
que.push(que.front());
que.pop();
}
int res = que.front();
que.pop();
size--;
return res;
}
int top() {
return que.back();
}
bool empty() {
return que.empty();
}
};