首页 > 代码库 > 用栈实现队列

用栈实现队列

用栈实现队列 

正如标题所述,你需要使用两个栈来实现队列的一些操作。

队列应支持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 };

 

用栈实现队列