LeetCode 232 Implement Queue using Stacks 两个栈实现队列

 1 class MyQueue {
 2 public:
 3     /** Initialize your data structure here. */
 4     MyQueue() {
 5         
 6     }
 7     
 8     /** Push element x to the back of queue. */
 9     void push(int x) {
10         stkPush.push(x);
11     }
12     
13     /** Removes the element from in front of queue and returns that element. */
14     int pop() {
15         int val;
16         if(stkPop.empty())
17         {
18             while(!stkPush.empty())
19             {
20                 val=stkPush.top();
21                 stkPush.pop();
22                 stkPop.push(val);
23             }
24         }
25         val=stkPop.top();
26         stkPop.pop();
27         return val;
28     }
29     
30     /** Get the front element. */
31     int peek() {
32         if(stkPop.empty())
33         {
34             while(!stkPush.empty())
35             {
36                 int val=stkPush.top();
37                 stkPush.pop();
38                 stkPop.push(val);
39             }
40         }
41         return stkPop.top();
42     }
43     
44     /** Returns whether the queue is empty. */
45     bool empty() {
46         return stkPush.empty()&&stkPop.empty();
47     }
48 private:
49     stack<int> stkPush;
50     stack<int> stkPop;
51 };
52 
53 /**
54  * Your MyQueue object will be instantiated and called as such:
55  * MyQueue obj = new MyQueue();
56  * obj.push(x);
57  * int param_2 = obj.pop();
58  * int param_3 = obj.peek();
59  * bool param_4 = obj.empty();
60  */
原文地址:https://www.cnblogs.com/xidian2014/p/8534593.html