zoukankan      html  css  js  c++  java
  • 用两个栈实现一个队列的功能,请用C++实现它

    /*

    解析:思路如下:假设两个栈A和B,且都为空。可以认为栈A提供入队列的功能,栈B提供出队列的功能。

           入队列:入栈A

           出队列:

                     如果栈B不为空,直接弹出栈B的数据

                    如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据

    */

    #include<iostream>
    #include<stack>
    using namespace std;
    template<class T>
    struct MyQueue
    {
     void push(T &t)
     {
      s1.push(t);
     }
     
     T front()
     {
      if(s2.empty())
      {
       if(s1.size()==0) throw;
       while(!s1.empty())
       {
        s2.push(s1.top());
        s1.pop();
       }
      }
      return s2.top();
     }
     
     
     void pop()
     {
      if(s2.empty())
      {
       while(!s1.empty())
       {
        s2.push(s1.top());
        s1.pop();
       }
      }
      if(!s2.empty())
       s2.pop();
     }
     
     stack<T> s1;
     stack<T> s2;
    };

    int main()
    {
     MyQueue<int>mq;
     int i;
     for(i=0;i<10;++i)
     {
      mq.push(i);
     }
     for(i=0;i<10;++i)
     {
      cout<<mq.front()<<endl;
      mq.pop();
     }
     return 0;
    }

  • 相关阅读:
    P3723 【[AH2017/HNOI2017]礼物】
    P4555 【[国家集训队]最长双回文串】
    manacher学习笔记
    多项式学习笔记
    题解 CF1097F 【Alex and a TV Show】
    docker数据卷容器
    python基础学习
    docker监控之cadvisor
    docker监控系统
    ssh配置详解及公私钥批量分发
  • 原文地址:https://www.cnblogs.com/fuyanan/p/3355237.html
Copyright © 2011-2022 走看看