首页 > 其他分享 >第五章 栈与队列part01

第五章 栈与队列part01

时间:2023-12-09 19:12:35浏览次数:32  
标签:int part01 Cache pop 队列 SimulateQueue 第五章 Num stack

第五章 栈与队列part01

 

 

232.用栈实现队列

 

 

基础逻辑 (用于 理解 , 直接 运行 的 话 会 报错 ,C++ STL stack 定义 的 不太一样) :

注 : //C++ STL Stack 的 pop 还 不管 弹数 , 得 用 top() 拿

 

逻辑 Code :

class MyQueue {
public:
   stack<int> stack_SimulateQueue_A ;      //用 于 日常 储存 元素
   stack<int> stack_SimulateQueue_B ;


   MyQueue() {

            //用于 操作 时 的 辅助 缓存 ( "辅助 Cache)

  }
   
   void push(int x) {

       stack_SimulateQueue_A.push(x);



  }
   
   int pop() {

       int Cache_Num = -1;
                                           //int Cache_Num ;

       while(!stack_SimulateQueue_A.empty())
      {

           //C++ STL Stack 的 pop 还 不管 弹数     , 得 用 top() 拿
           //这里 储存 一下 Java 的 操作

           stack_SimulateQueue_B.push(stack_SimulateQueue_A.pop());

      }

       Cache_Num = stack_SimulateQueue_B.pop();

       while(!stack_SimulateQueue_B.empty())
      {
           stack_SimulateQueue_A.push(stack_SimulateQueue_B.pop());

      }

       return Cache_Num ;



  }
   
   int peek() {

       int Cache_Num = -1;
                                           //int Cache_Num ;

       while(!stack_SimulateQueue_A.empty())
      {
           stack_SimulateQueue_B.push(stack_SimulateQueue_A.pop());

      }

       Cache_Num = stack_SimulateQueue_B.peek();

       while(!stack_SimulateQueue_B.empty())
      {
           stack_SimulateQueue_A.push(stack_SimulateQueue_B.pop());

      }

       return Cache_Num ;


  }
   
   bool empty() {
       return stack_SimulateQueue_A.empty();
  }
};

/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/

 

 

 

C++ STL Code :

class MyQueue {
public:
   stack<int> stack_SimulateQueue_A ;      //用 于 日常 储存 元素
   stack<int> stack_SimulateQueue_B ;


   MyQueue() {

            //用于 操作 时 的 辅助 缓存 ( "辅助 Cache)

  }
   
   void push(int x) {

       stack_SimulateQueue_A.push(x);



  }
   
   int pop() {

       int Cache_Num = -1;
                                           //int Cache_Num ;
       //int num_Pass = -1;
       int num_Pass ;

       while(!stack_SimulateQueue_A.empty())
      {
           num_Pass = stack_SimulateQueue_A.top();

           stack_SimulateQueue_A.pop();

           //C++ STL Stack 的 pop 还 不管 弹数     , 得 用 top() 拿

           stack_SimulateQueue_B.push(num_Pass);

      }

       Cache_Num = stack_SimulateQueue_B.top();
       stack_SimulateQueue_B.pop();

       while(!stack_SimulateQueue_B.empty())
      {
           num_Pass = stack_SimulateQueue_B.top();

           stack_SimulateQueue_B.pop();

           stack_SimulateQueue_A.push(num_Pass);

      }

       return Cache_Num ;



  }
   
   int peek() {

       int Cache_Num = -1;
                                           //int Cache_Num ;
       int num_Pass ;

       while(!stack_SimulateQueue_A.empty())
      {
           num_Pass = stack_SimulateQueue_A.top();

           stack_SimulateQueue_A.pop();

           //C++ STL Stack 的 pop 还 不管 弹数     , 得 用 top() 拿

           stack_SimulateQueue_B.push(num_Pass);

      }

       Cache_Num = stack_SimulateQueue_B.top();

       while(!stack_SimulateQueue_B.empty())
      {
           num_Pass = stack_SimulateQueue_B.top();

           stack_SimulateQueue_B.pop();

           stack_SimulateQueue_A.push(num_Pass);

      }

       return Cache_Num ;


  }
   
   bool empty() {
       return stack_SimulateQueue_A.empty();
  }
};

/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/
 

 

标签:int,part01,Cache,pop,队列,SimulateQueue,第五章,Num,stack
From: https://www.cnblogs.com/brinisky/p/17891332.html

相关文章

  • 【JavaSE】数据结构(栈、队列、数组、链表)
    什么是数据结构?数据结构是计算机底层存储、组织数据的方式,是指数据相互之间是什么方式排列在一起的常见的数据结构栈、队列、数组、链表二叉树、二叉查找树、平衡二叉树、红黑树哈希表栈特点:先进后出队列特点:先进先出数组特点:有索引,内存连续优点:查询速度快O(1)缺点:增......
  • 基于Redis的简易延时队列
    基于Redis的简易延时队列一、背景在实际的业务场景中,经常会遇到需要延时处理的业务,比如订单超时未支付,需要取消订单,或者是用户注册后,需要在一段时间内激活账号,否则账号失效等等。这些业务场景都可以通过延时队列来实现。最近在实际业务当中就遇到了这样的一个场景,需要实现一个......
  • AMQP协议中的,消息队列RabbitMQ,ActiveMQ,Apache Kafka区别是什么?
    都是基于AMQP协议来的一种实现方式。参考chatGPT4回答请使用Markdown表格来展示RabbitMQ、ActiveMQ和ApacheKafka之间的区别:维度RabbitMQActiveMQApacheKafka语言ErlangJavaScala/Java协议AMQP、STOMP、MQTTAMQP、STOMP、OpenWire自定义协议......
  • 2023-2024-1 20232311 《网络空间安全导论》 第五章学习
    教材学习内容总结思维导图教材学习中的问题和解决过程问题1:除计算机技术外,还有哪些领域需要协同工作来更好地保证信息内容的安全问题1解决方案(询问ChatGPT)问题2:如何基于网络交互重构机制实现需要身份认证的动态网页发布信息获取问题2解决方案(询问ChatGPT)基于AI的学习......
  • python实现一个优先级队列
    实现一个优先级队列问题怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素解决方案下面的类利用heapq模块实现了一个简单的优先级队列:importheapqclassPriorityQueue:def__init__(self):self._queue=[]s......
  • 消息传递:消息队列
    一、消息队列在上一章节消息传递:消息队列中提到PIPE和FIFO是基于字节流的,把这种字节流(没有消息边界)分隔成各个记录的任何方法都得由应用程序来实现。例如提到的一个记录的格式为一行,格式:1234/tmp/fifo.serv。另一方面,PIPE和FIFO有许多规则,制约的open的阻塞与否。当......
  • 第五章:内容安全基础
    ##教材学习总结思维导图:总揽全局各个小节思维导图及简介第一节:信息内容安全概述*数据内容成为互联网的中心关注点*正面影响:大数据正在逐步演变为生产力*负面影响:不良信息的大量传播,不正当行为泛滥*产生原因:(1)在互联网爆炸性发展的同时,相关方面的规范和管理措施未能同步发......
  • day10栈与队列
    栈与队列理论基础来源:第5章栈与队列-Hello算法(hello-algo.com)代码随想录(programmercarl.com)提问:C++中stack是容器么?我们使用的stack是属于哪个版本的STL?我们使用的STL中stack是如何实现的?stack提供迭代器来遍历stack空间么?5.1栈「栈stack」是一种遵循......
  • 队列
    队列是先进先出(FIFO,First-In-First-Out)的线性表。队列只允许在后端(称为back,rear,tail)进行插入操作,在前端(称为front,head)进行删除操作。队列的操作入队:在队尾(称为back)进行插入或添加操作;出队:在队头(称为front)进行删除操作。数组模拟队列intq[SIZE],front=1,back=0;  ......
  • 1.消息队列基础
    什么是消息队列?可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。由于队列Queue是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。 参与消息传递的双方称为生产者和消费者,生产者负责发送消息,消......