解法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();}
};