[leetcode] 232. Implement Queue using Stacks

本文介绍了一种使用两个栈来实现队列的方法。通过将元素压入一个栈并在需要时弹出到另一个栈来实现队列的基本操作:push、pop、peek及empty。这种方法仅使用了标准的栈操作。

Implement the following operations of a queue using stacks.

  • push(x) -- Push element x to the back of queue.
  • pop() -- Removes the element from in front of queue.
  • peek() -- Get the front element.
  • empty() -- Return whether the queue is empty.

Notes:

    • You must use only standard operations of a stack -- which means only push to toppeek/pop from topsize, and is empty operations are valid.
    • Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
    • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).

 

Solution:

 1 class Queue {
 2 public:
 3     stack<int> stkin;
 4     stack<int> stkout;
 5     // Push element x to the back of queue.
 6     void push(int x) 
 7     {
 8         stkin.push(x);    
 9     }
10 
11     // Removes the element from in front of queue.
12     void pop(void) 
13     {
14         if (stkout.empty())
15         {
16             while (!stkin.empty())
17             {
18                 int temp = stkin.top();
19                 stkin.pop();
20                 stkout.push(temp);
21             }
22         }
23         if (!stkout.empty())
24             stkout.pop();
25     }
26 
27     // Get the front element.
28     int peek(void) 
29     {
30         if (stkout.empty())
31         {
32             while (!stkin.empty())
33             {
34                 int temp = stkin.top();
35                 stkin.pop();
36                 stkout.push(temp);
37             }
38         }
39         
40         return stkout.top();
41     }
42 
43     // Return whether the queue is empty.
44     bool empty(void) 
45     {
46         return stkin.empty() && stkout.empty();    
47     }
48 };

 

转载于:https://www.cnblogs.com/ym65536/p/5496272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值