zoukankan      html  css  js  c++  java
  • 由两个栈组成的队列(C++实现)

    代码:

    #include <iostream>
    #include <stack>
    # include <string>
    #include <stdexcept>
    using namespace std;
    class My_Queue
    {
    public:
      My_Queue(){};
      ~My_Queue(){};
      int add(int var);
      int poll();
      int peek();
      bool empty();
      bool s_push_empty();
      int stackPush_pop();
    private:
      stack<int> stackPush;
      stack<int> stackPop;
    };
    //实现代码
    int My_Queue::add(int var)
    {
      stackPush.push(var);
      return 0;
    }
    int My_Queue::poll()
    {
      if(stackPush.empty()&&stackPop.empty()){
            throw runtime_error("Empty Queue !");
          }
      else{
        while(!stackPush.empty()){
          int top_val = stackPush.top();
          stackPush.pop();
          stackPop.push(top_val);
        }
      }
      int top_value = stackPop.top();//返回stackPop栈顶元素的引用
      stackPop.pop();//弹出stackPop栈顶元素
      return top_value;
      }
    int My_Queue::peek()
    {
      if(stackPush.empty()&&stackPop.empty()){
            throw runtime_error("Empty Queue !");
          }
      else{
        while(!stackPush.empty()){
          int top_val = stackPush.top();
          stackPush.pop();
          stackPop.push(top_val);
        }
      }
      int top_value = stackPop.top();
      return top_value;
    }
    bool My_Queue::empty()
    {
      if(stackPush.empty()&&stackPop.empty())
           return true;
      else
          return false;
    }
    int My_Queue::stackPush_pop()//stackPush弹出
    {
      if(!stackPush.empty()){
          int _top_var = stackPush.top();
          std::cout << _top_var << ' ';
          stackPush.pop();
      }
    }
    bool My_Queue::s_push_empty()//判断stackPush为空?
    {
      if(stackPush.empty())
           return true;
      else
           return false;
    }
    //测试代码
    int main()
    {
      My_Queue myqueue;
      int a[] = {1,3,2,2,1,5};
      for(int i=0;i<6;i++)
      {
        myqueue.add(a[i]);
      }
      std::cout << "this is stackpush_data:" << ' ';
      while (!myqueue.s_push_empty()) {
        myqueue.stackPush_pop();//弹出stackPush中所有元素
      }
      for(int i=0;i<6;i++)
      {
        myqueue.add(a[i]);
      }
      std::cout << "this is queue stackPop_data(from_peek_function):" << myqueue.peek() << ' ';//弹出stackPop栈顶元素
      std::cout <<  ' ';
      std::cout << "this is queue stackPop_data(from_poll_function):" << ' ';
      while(!myqueue.empty())
      {
        std::cout << myqueue.poll() << ' ';//弹出stackPop所有元素
      }
     
      return 0;
     
    }
     
    测试结果:
     
  • 相关阅读:
    【五一qbxt】day7-1 引水入城
    【五一qbxt】day6 OI中的stl
    【五一qbxt】test2
    ASCII码
    深入浅出Redis04使用Redis数据库(lists类型)
    深入浅出Redis03 使用Redis数据库(hashes类型)
    深入浅出Redis01安装
    FireFox & Chrome 使用技巧
    Android学习笔记03-搭建Win8下的Android开发环境
    java + jquery + ajax + json 交互
  • 原文地址:https://www.cnblogs.com/shiheyuanfang/p/13376302.html
Copyright © 2011-2022 走看看