1.用两个队列实现栈
class Mystack{
private:
queue<int> q1,q2;
public:
Mystack(){}
void push(int x){
q2.push(x);
while(q1.empty()){
q2.push(q1.front());
q1.pop();
}
swap(q1,q2);
}
int pop(){//移除并返回栈顶元素
int x = q1.front();
q1.pop();
return x;
}
int top(){//返回栈顶元素
return q1.front();
}
bool empty(){
return q1.empty;
}
}
2.用一个队列
class Mystack{
private:
queue<int> q;
public:
Mystack(){}
void push(int x){
int size = q.size();
q.push(x);
for(int i = 0;i < size;i++){
q.push(q.front());
q.pop();
}
}
int pop(){//移除并返回栈顶元素
int res = q.front();
q.pop();
return res;
}
int top(){//返回栈顶元素
return q.front();
}
bool empty(){
return q.empty();
}
}