力扣对应题目链接:232. 用栈实现队列 - 力扣(LeetCode)
一、《剑指 Offer》内容
二、分析题目
三、代码
class MyQueue { public: stack<int> inStack; stack<int> outStack; MyQueue() {} void push(int x) { inStack.push(x); } int pop() { if(outStack.empty()) { if(inStack.empty()) return -1; while(!inStack.empty()) { int tmp=inStack.top(); inStack.pop(); outStack.push(tmp); } } int dele=outStack.top(); outStack.pop(); return dele; } int peek() { int res=this->pop(); outStack.push(res); return res; } bool empty() { return inStack.empty() && outStack.empty(); } }; /** * 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(); */
四、相关题目(用两个队列实现一个栈)
力扣对于题目链接:225. 用队列实现栈 - 力扣(LeetCode)
1、《剑指 Offer》内容
2、代码
class MyStack { public: queue<int> q1; queue<int> q2; MyStack() {} void push(int x) { q1.push(x); } int pop() { int n=q1.size(); n--; while(n--) { q2.push(q1.front()); q1.pop(); } int res=q1.front(); q1.pop(); q1 = q2; while (!q2.empty()) q2.pop(); return res; } int top() { return q1.back(); } bool empty() { return q1.empty() && q2.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(); */