classMyQueue { public: stack<int> s1; stack<int> s2; public: MyQueue(){ } // Push element x to the back of queue. voidpush(int x){ while(s1.size()>0){ s2.push(s1.top()); s1.pop(); } s1.push(x); while(s2.size()>0){ s1.push(s2.top()); s2.pop(); } }
// Removes the element from in front of queue. intpop(void){ int rem = s1.top(); s1.pop(); return rem; }
// Get the front element. intpeek(void){ return s1.top(); }
// Return whether the queue is empty. boolempty(void){ return (s1.size()==0); } };
/** * Your MyQueue object will be instantiated and called as such: * MyQueue* obj = new MyQueue(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->peek(); * bool param_4 = obj->empty(); */
classMyStack { public: queue<int> q1; queue<int> q2; /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ voidpush(int x){ q2.push(x); while(q1.size() > 0){ q2.push(q1.front()); q1.pop(); } while(q2.size() > 0){ q1.push(q2.front()); q2.pop(); } } /** Removes the element on top of the stack and returns that element. */ intpop(){ int ret = q1.front(); q1.pop(); return ret; } /** Get the top element. */ inttop(){ return q1.front(); } /** Returns whether the stack is empty. */ boolempty(){ return q1.empty(); } };
/** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty(); */