• [剑指offer]用两个栈实现队列


    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    思路:栈1中存储元素的顺序为逆序,导入到栈2中元素顺序即为顺序。
     1 class Solution
     2 {
     3 public:
     4     void push(int node) {
     5         while(!stack2.empty())
     6         {
     7           stack1.push(stack2.top());
     8           stack2.pop();
     9         }
    10         stack1.push(node);
    11     }
    12 
    13     int pop() {
    14         while(!stack1.empty())
    15         {
    16           stack2.push(stack1.top());
    17           stack1.pop();
    18         }
    19         int node = stack2.top();
    20         stack2.pop();
    21         return node;
    22       }
    23 private:
    24     stack<int> stack1;
    25     stack<int> stack2;
    26 };

    思考:入栈1时,由于是逆序,那么当前进栈元素应该最后进栈,放在栈顶第一个元素的位置,这样转移到栈2时就会在栈底,即满足队列的FILO。

  • 相关阅读:
    继续无题
    关于自杀的一些观点
    详解js运算符
    数据库批量 之 Oracle
    数据库批量 之 DB2
    linux压缩(解压缩)命令详解
    Cron
    解压命令
    常见web错误码
    cmd命令大全
  • 原文地址:https://www.cnblogs.com/Swetchine/p/11296942.html
Copyright © 2020-2023  润新知