首页 > 其他分享 >队列

队列

时间:2023-12-08 12:23:09浏览次数:34  
标签:q1 队尾 队列 back queue front

队列是先进先出(FIFO,First-In-First-Out)的线性表。队列只允许在后端(称为back,rear,tail)进行插入操作,在前端(称为front,head)进行删除操作。

队列的操作

入队:在队尾(称为back)进行插入或添加操作;

出队:在队头(称为front)进行删除操作。

数组模拟队列

int q[SIZE], front = 1, back = 0;    //定义队列q,队头与队尾
q[++back] = x;            //队尾插入元素
front++;                //队头删除元素
cout << q[front];        //访问队头
cout << q[back];        //访问队尾
front = 1, back = 0;    //清空队列

STL中的队列

STL 中的 queue 容器提供了一众成员函数以供调用。其中较为常用的有:

  • 元素访问
    • q.front() 返回队首元素
    • q.back() 返回队尾元素
  • 修改
    • q.push() 在队尾插入元素
    • q.pop() 弹出队首元素
  • 容量
    • q.empty() 队列是否为空,若为空则返回true,否则返回false
    • q.size() 返回队列中元素的数量

此外,queue 还提供了一些运算符。较为常用的是使用赋值运算符 = 为 queue 赋值,示例:

#include<queue>                        //使用queue需要对应的头文件
queue<int> q1, q2;                    //新建两个队列q1,q2
q1.push(1);                            //q1入队1
q2 = q1;                            //queue可以进行整体赋值,将q1赋值给q2
cout << q1.front();                    //输出q1队头,仅有一个元素1,输出为1
cout << q2.back();                    //输出q2队尾,仅有一个元素1,输出为1
q1.pop();                            //q1出队
if(!q2.empty) cout << q2.size();    //如果q2不为空,输出q2元素数量,仅有一个元素,输出为1

标签:q1,队尾,队列,back,queue,front
From: https://www.cnblogs.com/luliusheng/p/17884895.html

相关文章

  • 1.消息队列基础
    什么是消息队列?可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。由于队列Queue是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。 参与消息传递的双方称为生产者和消费者,生产者负责发送消息,消......
  • 第4章. 队列(Queue)
    队列(Queue)一、队列的基本概念队列是一种特殊的线性表,只能在头尾两端进行操作队尾(rear):只能从队尾添加元素,一般叫做enQueue,入队队头(front):只能从队头移除元素,一般叫做deQueue,出队先进先出的原则,FIRSTINFIRSTOUT,FIFO二、队列的接口设计intsize();//元素的数......
  • Rabbitmq队列
    rabbitmq消息中间件-消息队列异步开发语言erlang爱立信公司1.安装pythonrabbitMQmodule 1pip3installpika关闭防火墙1serviceiptablesstop关闭防火墙2.实现最简单的队列通信send端:1#send端2importpika34credentials=pika.PlainCredent......
  • 消息队列
    简介:在C#中,消息队列是一种用于在应用程序之间异步传递消息的通信机制。它通常被用于异步通信,允许发送者和接收者在不需要立即相互作用的情况下进行消息交换,可以用来解耦应用程序的各个组件,实现分布式系统之间的通信,并提供可靠性和可扩展性。消息队列系统通常包括以下核心组件:......
  • 单调栈与单调队列算法总结
    单调栈知识概览单调栈最常见的应用是找到每一个数离它最近的且比它小的数。单调栈考虑的方式和双指针类似,都是先想一下暴力做法是什么,然后再挖掘一些性质如单调性,最终可以把目光集中在比较少的状态中,从而达到降低时间复杂度的作用,都是算法优化的一种手段。对于的情况,更有可能......
  • 八、延迟队列
    一、延迟队列的概念二、延迟队列使用场景三、RabbitMQ中的TTL1、消息设置TTL2、队列设置TTL3、两者的区别四、整合springboot1、创建项目2、添加依赖3、修改配置文件4、添加Swagger配置类五、队列TTL1、代码架构图2、配置文件类代码3、消息生......
  • PriorityBlockingQueue 优先级队列
    packagestudy;importlombok.Data;importjava.util.Comparator;importjava.util.concurrent.PriorityBlockingQueue;publicclassPriorityBlockingQueueDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{PriorityBlocki......
  • 阻塞队列之 LinkedBlockingQueue
    LinkedBlockingQueue:Java多线程编程中的阻塞队列在Java多线程编程中,LinkedBlockingQueue是一个非常重要的类,它提供了一种用于在生产者和消费者之间进行数据传递的机制。LinkedBlockingQueue广泛应用于各种场景,如线程池、任务队列等。本文将详细介绍LinkedBlockingQueue的原理......
  • 消息队列入门 —— 以 Kafka 为例(一)
    消息队列入门——以Kafka为例(一)概述当我们的应用逐步变得庞大,各层应用之间调用关系越来越复杂,对系统的可用性以及可扩展性要求也越来越高。消息队列作为分布式系统架构中的一个关键中间件,提供了“消息传递”和“消息排队模型”,可以应用在系统解耦、异步处理、流量削峰等多个......
  • 栈和队列算法总结
    知识概览在数据结构中,栈和队列都属于线性表。栈是先进后出(FILO)的,队列是先进先出(FIFO)的。代码模板#include<iostream>usingnamespacestd;constintN=100010;//**********************栈intstk[N],tt;//插入stk[++tt]=x;//弹出tt--;//判断栈是否......