首页 > 其他分享 >模拟队列

模拟队列

时间:2023-03-09 17:55:39浏览次数:40  
标签:队尾 队列 tt 队头 int hh 模拟 指针

 

 

 

 重点:队列是有队头指针hh和队尾指针tt,判断空的条件是如果hh>=tt,队列就为空。

栈只能从一个入口出入,栈底永远在0位置(这个位置不存元素)。但是队列是从队尾t a i l入队,从队头h e a d出队的。所以入队的过程其实会让队尾t a i l 沿着数组索引的增长方向增长,出队的过程则会让队头h e a d 沿着数组索引的增长方向增长。

在元素入队时,先把队尾指针t a i l 加1,然后再在其位置写入元素值。元素出队时,直接把队头的指针head加1即可。直到队头指针再次处于超过队尾指针的位置,模拟队列为空。(参考csdn模拟栈)

#include<iostream>

using namespace std;

int hh=0,tt=-1;//队尾和队头指针初始位置

const int N=1e5+10;

int q[N];

int main(){

int m;

cin>>m;

while(m--){

stirng s;

cin>>s;

if(s=="push"){

int x;

cin>>x;

q[++tt]=x;

}else if(s=="pop"){

hh++;

}else if(s=="query"){

cout<<q[hh]<<endl;

}else

if(hh>=tt){

cout<<"YES“”<<endl;

else 

cout<<"NO"<<endl;

}

}

return 0;

}

标签:队尾,队列,tt,队头,int,hh,模拟,指针
From: https://www.cnblogs.com/chenxinyue/p/17199434.html

相关文章

  • asp.net core 3.1 模拟数据库,假数据步骤
         1.Model usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;namespaceWebgentle.BookStore.......
  • ORACLE SEQUENCE(队列)用法2
    PS:当需要产生唯一ID的时候,MSSQL只需将ID设置为int类型,并且设置为自增长就能达到.oracle中需要用序列+触发器才可以达到MSSQL中的只增长效果.(俩者还是有区别的.oracl......
  • 华为OD机试 特异性双端队列
    特异性双端队列......
  • 【一个蒟蒻的挣扎】模拟退火 (Simulated Annealing,SA)
    一、简介模拟退火算法(SimulatedAnnealing,SA)最早的思想是由N.Metropolis [1]  等人于1953年提出。1983年,S.Kirkpatrick等成功地将退火思想引入到组合优化领域......
  • 3.8HL模拟赛游记
    3.8HL模拟赛游记\(IOI\)赛制(喜开考先看\(T1\)想用搜索但是没有思路去冲\(T2\)打出了\(60pts\)暴力但交上去就\(TLE\)心态小崩并开\(T3\)码了一个\(dfs\)套\(dfs\)调不......
  • 模拟总结2
    这回寄了,只拿了三分T1貌似做过啊,但是我往八个方向扩展貌似写挂了,前缀和也没想到qwqT2真心不会T3没有看明白规律...T4暴力写挂了T5部分分写挂了,没想到用堆T6还......
  • 第三章 C语言:栈和队列
    一、栈特性:先进后出,顺序存储#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>#defineCAPACITY3//默认初识容量typedefintSD......
  • 中断下文tasklet、工作队列
    tasklettasklet结构体structtasklet_struct{};unsignedlongdata还可以区分tasklettasklet相关函数示例核心代码......
  • 【栈】LeetCode 剑指 Offer 09. 用两个栈实现队列
    题目链接剑指Offer09.用两个栈实现队列思路两个栈模拟代码classCQueue{Deque<Integer>inStack;Deque<Integer>outStack;publicCQueue(){......
  • 利用阻塞队列完成异步操作
    //异步阻塞队列变量privateBlockingQueue<VoucherOrder>orderTasks=newArrayBlockingQueue<>(1024*1024);//createthethreadpoolsignalthread......