首页 > 代码库 > leetcode- 232. Implement Queue using Stacks
leetcode- 232. Implement Queue using Stacks
使用栈实现队列:
将栈中的元素取出再存入一次就是队列:
class MyQueue {public: /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */ void push(int x) { s.push(x); } /** Removes the element from in front of queue and returns that element. */ int pop() { stack<int> s1; while(!s.empty()) { int t=s.top(); s.pop(); s1.push(t); } int t=s1.top(); s1.pop(); while(!s1.empty()) { int t=s1.top(); s.push(t); s1.pop(); } return t; } /** Get the front element. */ int peek() { stack<int> s_tem=s; while(s_tem.size()>1) { s_tem.pop(); } return s_tem.top(); } /** Returns whether the queue is empty. */ bool empty() { return s.empty(); } private: stack<int> s; };/** * 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(); */
更简单一点实现,pop和top的实现互相借助时:
class MyQueue {public: stack<int> S1, S2; /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */ void push(int x) { S1.push(x); } /** Removes the element from in front of queue and returns that element. */ int pop() { int v = -1; if (!S2.empty()) { v = S2.top(); S2.pop();} else { while(!S1.empty()) { S2.push(S1.top()); S1.pop(); } v = S2.top(); S2.pop(); } return v; } /** Get the front element. */ int peek() { if (!S2.empty()) return S2.top(); else { while(!S1.empty()) { S2.push(S1.top()); S1.pop(); } return S2.top(); } } /** Returns whether the queue is empty. */ bool empty() { return (S1.empty()) && (S2.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(); */
leetcode- 232. Implement Queue using Stacks
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。