首页 > 其他分享 >队列

队列

时间:2023-11-17 15:56:59浏览次数:43  
标签:返回 qr 队列 元素 queue ql

队列

队列(queue)是一种具有「先进入队列的元素一定先出队列」性质的表。

由于该性质,队列通常也被称为先进先出(first in first out)表,简称 FIFO 表。

STL队列

​ 以下操作的复杂度均为\(O(1)\)。

  • 创建队列

    • queue<int> q
    • queue<char> q
    • queue<string> q
  • 元素访问

    • q.front() 返回队首元素
    • q.back() 返回队尾元素
  • 修改

    • q.push(x) 在队尾插入元素\(x\)
    • q.pop() 弹出队首元素
  • 容量

    • q.empty() 队列是否为,若为空,返回true
    • q.size() 返回队列中元素的数量

STL用法:

 queue<int> q;
 printf("队列是否为空:%d\n", q.empty());
 for(int i = 1; i <= 3; i ++)
 {
 	q.push(i);
 }
 printf("队首元素:%d,队尾元素:%d\n", q.front(), q.back());
 q.pop();
 printf("队首元素:%d,队尾元素:%d\n", q.front(), q.back());
 printf("队列长度:%d", q.size());

image-20231117152037120

数组模拟队列

​ 以下操作的复杂度均为\(O(1)\)。

  • 创建队列

    • int q[SIZE], ql = 1, qr = 0;
  • 元素访问

    • q[ql] 返回队首元素
    • q[qr] 返回队尾元素
  • 修改

    • q[++ qr] = x 在队尾插入元素\(x\)
    • ql ++ 弹出队首元素
  • 容量

    • qr >= ql 队列是否为非空:若非空,返回true
    • qr - ql + 1 返回队列中元素的数量

数组模拟队列用法:

int q[100], ql = 1, qr = 0;
printf("队列是否为非空:%d\n", qr >= ql);
for(int i = 1; i <= 3; i ++)
{
	q[++ qr] = i;
}
printf("队首元素:%d,队尾元素:%d\n", q[ql], q[qr]);
ql ++;//弹出队首
printf("队首元素:%d,队尾元素:%d\n", q[ql], q[qr]);
printf("队列长度:%d", qr - ql + 1);

image-20231117152506519

模板题目

洛谷B3616 【模板】队列

循环队列

标签:返回,qr,队列,元素,queue,ql
From: https://www.cnblogs.com/acwhr/p/17838932.html

相关文章

  • activemq 配置延时队列
    conf/activemq.xml新增配置<brokerxmlns="http://activemq.apache.org/schema/core"brokerName="localhost"dataDirectory="${activemq.data}"schedulerSupport="true">jmsMessagingTemplate.convertAndSend(QUEUE,newH......
  • setTimeout可以将字符串当成代码执行,类比eval函数。当遇到setTimeout或者SetInterval,
    请问以下JS代码的输出顺序是?letdate=newDate()setTimeout(()=>{console.log('1')},2000)setTimeout('console.log(2)',1000);setTimeout(function(){console.log('3')},1500);while((newDate()-date)<3000){}A报错B......
  • 队列
    #include<stdio.h>#include<stdlib.h>//队列结点的定义typedefstructQNode{intdata;structQNode*next;}QNode;//链式队列的定义typedefstruct{QNode*front;//队头指针QNode*rear;//队尾指针}LinkedQueue;//初始化链式队列......
  • 循环队列
    一、普通队列(顺序存储结构)说明:rear指向队尾元素,front指向对头元素的下一个元素。i.判断元素个数:number=rear-front;ii.判断队空:rear==frontiii.插入元素:rear++;iiii.删除元素:front++;iiiii.队满操作:rear==length-1;2.2遇到假溢出问题如严蔚敏老师数据结构书中,写道,每次插......
  • 代码随想训练营第三十五天打卡(Python)| 860.柠檬水找零、406.根据身高重建队列、452. 用
    860.柠檬水找零classSolution:deflemonadeChange(self,bills:List[int])->bool:five,ten,twenty=0,0,0forbillinbills:ifbill==5:five+=1elifbill==10:iffive......
  • 灵活、可用、高扩展,EasyMR 带来全新 Yarn 的队列管理功能及可视化配置
    YARN(YetAnotherResourceNegotiator)是Hadoop生态系统中的资源调度器,主要用于资源管理和作业调度。YARN自身具备队列管理功能,通过对YARN资源队列进行配置和管理,实现集群资源的分配,以满足不同应用和用户的需求。YARN的引入为集群在利用率、资源统一管理和数据共享等方面带来......
  • Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmedia
    下列关于Vue的描述错误的是()A当给某个组件修改某个值时,该组件不会立即重新渲染BVue内部使用原生Promise.then、MutationObserver和setImmediate实现异步队列,不会采用setTimeout(fn,0)C$nextTick()返回一个Promise对象D$nextTick()可以配合async/await使用正确答案:B官......
  • C实现循环队列
    1.循环队列的基本模型1.1此模型采用的队列判空条件是rear==front为真1.2此模型采用的队列已满条件是(rear+1)%maxsize==front为真,因此有一个数组单元(也就是front指向的数组单元)不可使用1.3可以在队列结点加一个成员表示最近一次对队列的操作为入队操作或者出队操作,这样......
  • 单调队列
    acwing154滑动窗口,单调队列q存的是下标,真正的值需要再套一个a数组1#include<iostream>2usingnamespacestd;34constintN=1e6+10;56intn,k;7inta[N],q[N];//q代表单调队列89intmain()10{11scanf("%d%d",&n,&k);12for(in......
  • 高效利用队列的空间
      大家都知道队列是可以用数组来模拟的,可以先开辟一段定长的数组空间,然后分别使用两个变量head和tail来代指队列的头和尾,从而维护整个队列,相信到这里大家都比较熟悉。不过这种做法是有弊端的,比如说下图这种情况  假设经过不断地增删元素,Head和Tail已经来到了数组最后两个位......