循环队列

入队判断是否满、
出队判断是否空




队列的有效空间[head,Tail)
入队列:把新的元素放在tail对应的下标上,同时tail++
o(1)
当Tail到达数组的末尾时,Tail从0开始
出队列:就把head++,也就意味着把原来的head指向的元素就排除到有效区间之外

怎么判断环形队列空和满?

public class MyQueue2 {//环形队列,用数组实现环形队列的入队出队,取队首元素private int[] data=new int[100];private int head=0;private int tail=0;//记录元素的个数private int size=0;//入队public boolean offer(int val){//首先判断队列是否满了//比较元素的个数和数组的长度if(size==data.length){//队列满了return false;}//把新元素放在taildata[tail]=val;tail++;//如果tail到达数组末尾,此时元素个数未满,tail从0开始if(tail==data.length){tail=0;}//更新size值size++;return true;}//出队public Integer poll(){//先判断是否空if(size==0){return null;}int ret= data[head];//更新head的位置head++;if(head==data.length){head=0;}size--;return ret;}//取队首元素public Integer peek(){if(size==0){return null;}int ret= data[head];return ret;}

切记:出队列的时候更新head的位置

【数据结构】循环队列相关推荐

  1. python环形队列_Python 实现数据结构-循环队列的操作方法

    今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...

  2. 循环队列的java结构_Java数据结构——循环队列

    普通顺序队列存在的问题 在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位.出队时,则是头指针front后移一个单位.像这样进行了一定数量的入队和出队操作后 ...

  3. 数据结构--循环队列

    循环队列 图片讲解

  4. [数据结构]-循环队列

    循环队列 package com.cn.jichu.day09;public class LoopQueue<E> {/*** 数组*/private E[] data;/*** 头指针, ...

  5. 数据结构循环队列C++实现

    1.队列的概念 队列只允许在表的一端插入,另一端删除.允许插入的一端叫做队尾,允许删除的一端叫做对首.队列的特性叫"先进先出".和栈一样,队列的存储形式也有两种,基于数组的存储表示 ...

  6. 数据结构-循环队列(C语言代码)

    循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用.在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可 ...

  7. Python写数据结构:循环队列

    #!/usr/bin/python3.5 #_*_coding:utf-8_*_class Queue():def __init__(self,capacity):self.queue = [None ...

  8. c语言 数据结构 循环队列

    #include<stdio.h> #include<stdlib.h> #define QueueSize 100 typedef char DataType; typede ...

  9. 数据结构之——队列与循环队列

    数据结构学习之--队列与循环队列 什么是队列(Queue) 队列基于动态数组的实现及时间复杂度分析 优化队列 循环队列(LoopQueue) 什么是队列(Queue) 队列(Queue)同栈(stac ...

  10. 【数据结构】队列-顺序队列、循环队列、链队、双端队列

    定义 队列是只允许在一端进行插入,而在另一端进行删除的线性表. 队头(Front):允许删除的一端,又称为队首. 队尾(Rear): 允许插入的一端. 先进入队列的元素必然先离开队列,即先进先出(Fi ...

最新文章

  1. 记录win10快捷键
  2. excel导入SQL脚本
  3. 极度随机树ExtraTreesClassifier
  4. 刚刚出炉的Asp.net网站部署视频教程
  5. oracle 读懂10046视频,10046、10053、实操记录
  6. python中metaclass的理解
  7. Qt连接SQL Server 2014数据库
  8. Fiddler抓包教程 ---> Fiddler如何证书配置与开启抓包完整详解
  9. 硅谷也疯狂 IT互联网进入中美跨境人才抢夺战时代
  10. ps蒙版使用计算机一级,photoshop基础教程当中的快速蒙版的使用方法
  11. 手把手入门C语言—输入数组
  12. Java8新特性 方法引用(二)
  13. 计算机组成内存外存,内存和外存
  14. mysql意见反馈表设计_山西省住房和城乡建设厅 关于开展2021年度山西省建设工程企业信用评价工作的通知(第209号)...
  15. Q1营收净利双双超预期 为何转型中的陆金所驱动力不足?
  16. 期货秒交易(期货秒懂百科)
  17. C语言用户自定义标识符的命名规则,c语言中用户标识符的命名规则介绍
  18. WeiXin Share{微信分享}
  19. windows 无法停止SQLserver 服务
  20. 电子烟二手烟对人有伤害吗

热门文章

  1. html5手机不能自动播放音乐,H5案例---解决H5中背景音乐无法自动播放问题
  2. ubuntu oracle工具下载,Ubuntu Oracle SQL Developer 1.5 下载
  3. 判断字符串是否可由子串拼接而成
  4. openssl命令生成根证书和使用根证书签名工作证书
  5. 5G NR 随机接入RACH流程(3)-- Msg1之选择正确的PRACH时频资源
  6. 微信小游戏靠什么赢得用户
  7. 独家:被纽约时报、华尔街日报报道的Senior Living是如何成为美国养老产业的“流量IP”?
  8. facebook使用教程_保持知情的方法有很多。 为什么限制自己使用Facebook?
  9. 博通Broadcom SDK源码学习与开发5——ECOS系统层剖析
  10. insert --01--insert into 语句的三种写法