首页 > 代码库 > 用栈实现队列
用栈实现队列
用栈实现队列
正如标题所述,你需要使用两个栈来实现队列的一些操作。
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
pop和top方法都应该返回第一个元素的值。
样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2
挑战
仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的
标签
栈 LintCode 版权所有 队列
1 class MyQueue { 2 public: 3 stack<int> stack1; 4 stack<int> stack2; 5 6 MyQueue() { 7 // do intialization if necessary 8 } 9 10 void push(int element) { 11 // write your code here 12 stack1.push(element); 13 } 14 15 int pop() { 16 // write your code here 17 int data; 18 if(stack2.empty()) { 19 while(!stack1.empty()) { 20 data =http://www.mamicode.com/ stack1.top(); 21 stack2.push(data); 22 stack1.pop(); 23 } 24 } 25 26 data =http://www.mamicode.com/ stack2.top(); 27 stack2.pop(); 28 return data; 29 } 30 31 int top() { 32 // write your code here 33 int data; 34 if(stack2.empty()) { 35 while(!stack1.empty()) { 36 data =http://www.mamicode.com/ stack1.top(); 37 stack2.push(data); 38 stack1.pop(); 39 } 40 } 41 else 42 data =http://www.mamicode.com/ stack2.top(); 43 return data; 44 } 45 };
用栈实现队列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。