zoukankan      html  css  js  c++  java
  • 5、剑指offer--用两个栈实现队列

    题目描述
    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    解题思路:栈是后入先出,队列是先入先出;stack1负责插入,stack2负责弹出;因此在插入操作时,就是向stack1中插入;在弹出操作时,需要判断,如果stack2为空就将stack1中全部元素弹出并插入stack2,然后stack2中弹出
     1 #include <iostream>
     2 #include <stack>
     3 using namespace std;
     4 class Solution
     5 {
     6 public:
     7     void push(int node) {
     8         stack1.push(node);
     9     }
    10 
    11     int pop() {
    12         if(stack2.size()<=0)
    13         {
    14             while(stack1.size()>0)
    15             {
    16                 int node = stack1.top();
    17                 stack1.pop();
    18                 stack2.push(node);
    19             }
    20         }
    21         if(stack2.size()==0)
    22         {
    23             return 0;
    24         }
    25         int result = stack2.top();
    26         cout<<result<<endl;
    27         stack2.pop();
    28         return result;
    29     }
    30 
    31 private:
    32     stack<int> stack1;
    33     stack<int> stack2;
    34 };
    35 int main()
    36 {
    37     Solution s;
    38     s.push(1);
    39     s.push(2);
    40     s.push(3);
    41     s.pop();
    42     s.pop();
    43     s.pop();
    44     return 0;
    45 }

    运行结果:

  • 相关阅读:
    bloom filter
    【转】单实例
    Log Structured Merge Trees(LSM) 原理
    【转】南网成立始末
    变电站综合自动化系统
    bsp tree
    Private Bytes,Working Set,Virtual Size的区别
    kdtree
    asp.net下载文件几种方式
    C# FTP操作
  • 原文地址:https://www.cnblogs.com/qqky/p/6805492.html
Copyright © 2011-2022 走看看