基于数组实现队列(基于Java实现)
title: 基于数组实现队列(基于Java实现)
tags: 数组 队列
基于数组实现队列的原理:
基于数组实现的队列,使用两个指针,一个是head指针 ,指向的是队头;一个是tail指针,指向队尾。可以通过下面这张图片来进行理解,当a,b,c,d依次入队之后,队列中的head指针指向下标为0的位置,而tail指针指向的是下标为4的位置。当需要入队操作时,先进行判断一下该队列是否已满,判断的条件为:tail等于队列的长度n。如果队列已满,就返回fasle,否则,进行入队操作,同时tail进行自加,往后退一位;当需要出队操作时,先判断一下该队列是否为空,如果队列为空,则返回null值,判断条件为:head == tail,否则就将下标为head的值进行出队列操作,然后head再自加,即往后移动一位。
package com.company;//用数组实现的队列,也叫顺序队列
public class ArrayQueue {//数组:items, 数组大小:nprivate String[] items;private int n = 0;//head表示对头的下标,tail表示对尾下标private int head = 0;private int tail = 0;//申请一个大小为capacity的数组public ArrayQueue(int capacity){items = new String[capacity];n = capacity;}//入队public boolean enqueue(String item){//如果tail==n,表示队列已经满了if(tail == n) return false;items[tail] = item;++tail;return true;}//出队public String dequeue(){//如果head == tail,表示队列为空if(head == tail) return null;String ret = items[head];++head;return ret;}public static void main(String[] args) {ArrayQueue arrayQueue = new ArrayQueue(20);arrayQueue.enqueue("abc");arrayQueue.enqueue("edf");arrayQueue.enqueue("hij");String a = arrayQueue.dequeue();String b = arrayQueue.dequeue();System.out.println(a);System.out.println(b);}
}
实现的结果为:
abc
edf
通过输出的结果,可以看出队列是一种"先进先出"的数据结构。
欢迎浏览我的个人博客:https://chasing987.github.io/
基于数组实现队列(基于Java实现)相关推荐
- java bag集合_集合基于数组的实现:ArrayBag.java
/** * @Author 陈伟兵 * @MSN:cwbnig1982@hotmail.com * @E-mail:chenweibing1982@sohu.com * @CreateTime 200 ...
- 队列 开源 php,消息队列 - 基于think-queue消息队列 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
安装 本插件依赖thinkphp官方提供的think-queue队列,安装:composer require topthink/think-queue 安装后在application/extra下将产 ...
- 基于数组实现循环队列(基于Java实现)
title: 基于数组实现循环队列(基于Java实现) tags: 数组 循环队列 基于数组实现循环队列的方法原理: 我们在用数组实现队列的时候,发现当tail = n时,就会有数据搬移的操作,这样一 ...
- 基于链表实现队列(基于Java实现)
title: 基于链表实现队列(基于Java实现) tags: 链表 队列 基于链表的队列实现方法的原理: 基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针.它 ...
- 基于数组的无锁队列(译)
2019独角兽企业重金招聘Python工程师标准>>> 1 引言 最近对于注重性能的应用程序,我们有了一种能显著提高程序性能的选择:多线程.线程的概念实际上已经存在了很长时间.在过去 ...
- java 缓冲区溢出_基于数组越界的缓冲区溢出
上一篇文章说了函数调用时候的堆栈变化,这里就基于这个内容来验证一下基于数组越界的缓冲区溢出. 在c语言中,数组必须是静态的,也就是在定义的时候必须明确数组的大小,在根本上来说,这个是堆栈提升的原因,只 ...
- java数组查找文本_基于数组的二叉查找树 Binary Search Tree (Java实现)
二叉查找树 二叉查找树是一种支持动态查询的数据结构,所谓动态查寻结构:即在当数据集合内容发生改变时,集合内数据的排列组合不用重新构建.这样的数据结构在查询时需要不断变动的场景中是非常高效的,二叉查找树 ...
- java中基于数组的栈实现
在java中利用数组来实现栈以及相关操作. 首先我们要新建一个类,该类中new一个固定大小的数组,来充当我们的栈,来容纳入栈的数据. 在该类中我们可以对栈进行出栈入栈,扩容,和获取栈顶元素等操作.在该 ...
- java中的数组、队列、堆栈
声明一个数组 Java代码 String[] aArray = new String[5]; String[] bArray = {"a","b"," ...
最新文章
- 三份研究报告,聚焦 AI 的三大主要话题
- 阿里九峰:云计算开启的基础设施新时代
- 0x0000050蓝屏srvsys_win7电脑出现蓝屏0x00000050提示srv.sys如何解决[多图]
- [未解决]jQuery中autocomplete的source格式问题
- 租赁笔记本电脑哪里有_广东哪里有离心鼓风机优势-长沙鼓风机厂
- 2018.09.17 atcoder Digit Sum(数论)
- 吴恩达神经网络和深度学习-学习笔记-20-训练/开发/测试集划分
- version GLIBC_2.28 not found
- 用Markdown做日记和任务跟踪的DailyNotes
- 纯干货:LCD屏和OLED屏的区别?手机屏幕材质各有什么区别?
- 0x0000006B蓝屏问题解决方法
- Java 性能调优 (JVM CPU IO Memery)
- 电脑端bilibili视频缓存合并视频的解惑
- 2020华中科技大学计算机保研夏令营经验
- 一个简单的密码登陆界面。C语言
- 做短视频剪辑的两种配音方法
- 消除if…else的锦囊妙计
- MYSQL 中UNIQUE 用法 意思
- 深度揭密:2015年微商怎么玩才赚钱?
- Docker从入门到放弃-----Dockerfile常用命令解析与实战(使用docker制作一个开箱即用的consul镜像)
热门文章
- 数学建模python和java_参加数学建模用 MATLAB,还是 Python?
- 徒手解密 Spring Boot 中的 Starter自动化配置黑魔法
- java silk转mp3_微信小程序录音文件格式silk遇到的问题及解决方法
- 计算机林中鸟歌曲,励志歌曲曲-林中鸟
- mysql 大事务 binlog_执行大事务时出现binlog解析失败
- 冷热分离和直接使用大数据库_中台有“数”:大数据技术为苏宁818保驾护航
- 运维监控系统——Zabbix简介
- shell脚本教学(二)——diff、rename、cut、sort、unip
- CodeIgniter URL
- delphi 登录界面 主窗体 切换_winform项目——仿QQ即时通讯程序06:主界面交互逻辑...