• 由两个栈组成的队列(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;
     
    }
     
    测试结果:
     
  • 相关阅读:
    浅谈 PHP 与手机 APP 开发(API 接口开发)
    Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决
    win7彻底卸载iis
    Java ByteCode 规格严格
    CPUID 规格严格
    Your First Plugin(转载) 规格严格
    SQLYog Enterprise注册码 规格严格
    WSUS API&&WUAPI 规格严格
    linux学习一则 规格严格
    Eclipse分析源代码时总是显示org.eclipse.core.runtime.CoreException错误,找不到***文件(转载) 规格严格
  • 原文地址:https://www.cnblogs.com/shiheyuanfang/p/13376302.html
Copyright © 2020-2023  润新知