码迷,mamicode.com
首页 > 其他好文 > 详细

用栈实现队列

时间:2017-05-02 13:41:11      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:lap   challenge   bsp   方法   标题   panel   oid   nbsp   active   

用栈实现队列 

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

队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。

pop和top方法都应该返回第一个元素的值。

样例

比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2

挑战 

仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的

标签 
 
 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 = stack1.top();
21                 stack2.push(data);
22                 stack1.pop();
23             }
24         }
25     
26         data = 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 = stack1.top();
37                 stack2.push(data);
38                 stack1.pop();
39             }
40         }
41         else
42             data = stack2.top();
43         return data;
44     }
45 };

 

用栈实现队列

标签:lap   challenge   bsp   方法   标题   panel   oid   nbsp   active   

原文地址:http://www.cnblogs.com/libaoquan/p/6795538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!