解法2:1个队列实现栈
思路:假如我有4个元素1,2,3,4需要入栈,push了之后就是顺着号是1,2,3,4如果我pop了,那我就先获取队列大小,每次先把头插入到队列末尾,然后删除头,循环执行size-1次,(除了末尾元素),最后循环出来把4删除了就完事儿了!
class MyStack {
public:
queue<int> q1;
MyStack() {
}
void push(int x) {
q1.push(x);
}
int pop() {
int sz=q1.size();
int ele=q1.back();
for(int i=1;i!=sz;++i){
q1.push(q1.front());
q1.pop();
}
q1.pop();
return ele;
}
int top() {
return q1.back();
}
bool empty() {
return q1.empty();
}
};
解法1:2个队列实现栈
class MyStack {
public:
queue<int> q1,q2;
MyStack() {
}
void push(int x) {
q1.push(x);
}
int pop() {
int ele=q1.back();
int sz=q1.size();
for(int i=0;i<sz;++i){
if(i!=sz-1){
q2.push(q1.front());
}
q1.pop();
}
sz=q2.size();
for(int i=0;i<sz;++i){
q1.push(q2.front());
q2.pop();
}
return ele;
}
int top() {
return q1.back();
}
bool empty() {
return q1.empty();
}
};