用栈实现队列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用栈实现队列相关的知识,希望对你有一定的参考价值。

用栈实现队列 

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

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

 

以上是关于用栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章

数据结构用栈实现队列

用栈实现队列oj

剑指offer---05---用栈实现队列

精选力扣500题 第27题 LeetCode 232. 用栈实现队列c++ / java 详细题解

leecode刷题(26)-- 用栈实现队列

232. 用栈实现队列