• LeetCode OJ:Implement Stack using Queues(队列实现栈)


    Implement the following operations of a stack using queues.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • empty() -- Return whether the stack is empty.

    Notes:

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

    类似上一题的两个栈实现队列,但是有点不同,具体的见下面的注释:

     1 class Stack {
     2 public:
     3     // Push element x onto stack.
     4     void push(int x) {
     5         q1.push(x);
     6     }
     7 
     8     // Removes the element on top of the stack.
     9     void pop() {
    10         int tmp = q1.front();//注意这里的实现和双栈实现队列的方式是不相同的
    11         q1.pop();
    12         while(!q1.empty()){
    13             q2.push(tmp);
    14             tmp = q1.front();
    15             q1.pop();
    16         }
    17         swap(q1,q2);
    18     }
    19 
    20     // Get the top element.
    21     int top() {
    22         int tmp = q1.front();
    23         q1.pop();
    24         while(!q1.empty()){
    25             q2.push(tmp);
    26             tmp = q1.front();
    27             q1.pop();
    28         }
    29         q2.push(tmp);
    30         swap(q1, q2);//用swap即可,无须再向上次那样再倒回去
    31         return tmp;
    32     }
    33 
    34     // Return whether the stack is empty.
    35     bool empty() {
    36         return q1.empty();            
    37     }
    38 private:
    39     queue<int> q1;
    40     queue<int> q2;
    41 };
  • 相关阅读:
    锂电池充电!
    触电
    记录一次调试过程中烧毁电脑主板的经历!
    如何计算一个CPU的MIPS
    铜线的载流能力问题。
    用格西烽火串口助手制作程控命令协议!
    从qt编程看内存分区。
    贴片LED用法
    RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
    uboot学习——基于S3C2440的u-boot-1.1.6分析(一)
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/5014160.html
Copyright © 2020-2023  润新知