作者: wangding263  链接:http://wangding263.javaeye.com/blog/255523  发表时间: 2008年10月20日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

队列是一种“FIFO”先进先出的数据结构.可以想象每年在火车站中买票的人群所组成的"队列"。

|队员1 队员2 队员3 队员3 队员4 队员5 队员6 队员7 队员8|

^                                                                     ^

想象两个指针 一个指向队头 一个指向队尾,加人到队列中是从队尾入的,出队是从队头出队的。

队列接口:

/*** 队列FIFO的接口* * @author 鼎鼎* * @param <E>*/
public interface Queue<E> {/*** 入队: 从队尾加入一元素* * @param target*/public void add(E target);/*** 出队: 移走队头元素* * @param target* @return 当前队头元素*/public E remove();/*** 当前队列中的元素个数*/public int size();/*** 判断当前队列是否为空* * @return*/public boolean isEmpty();/*** 只是返回队头元素* @return*/public E front();}

数组队列的代码实现:

public class ArrayQueue<E> implements Queue<E> {private E[] data;// 当前队列中元素的大小private int size;private int front;private int rear;public ArrayQueue() {data = (E[]) new Object[20];size = 0;front = 0;rear = 0;}public void add(E target) {if (isFull()) {enlarge();//数组队列满后,需要扩充,记住扩充后要将front的值归0front=0;}rear = (front + size) % data.length;data[rear] = target;size++;}public boolean isEmpty() {return size == 0;}/*** 判断当前队列是否已满* * @return*/public boolean isFull() {return size == data.length;}/*** 将数组容量扩大两倍* */public void enlarge() {E[] newData = (E[]) new Object[data.length * 2];for (int i = 0; i < data.length; i++) {newData[i] = data[i];}data = newData;newData = null;}public E remove() {if (isEmpty()) {throw new RuntimeException("队列为空!");}E tempData = data[front];data[front] = null;front = (front + 1) % (data.length);size--;return tempData;}public int size() {return size;}public E front() {if (isEmpty()) {throw new RuntimeException("队列为空!");}return data[front];}}

已有 0 人发表留言,猛击->>这里<<-参与讨论

JavaEye推荐

  • 加入阿里巴巴,发展潜力无限
  • 搜狐网站诚聘Java、PHP和C++工程师
  • Windows7在微软WinHEC 2008上揭开神秘面纱

转载于:https://www.cnblogs.com/ChrisWang/archive/2008/10/20/1324997.html

Java数组队列ArrayQueue相关推荐

  1. php环行队列实现,java数组实现队列及环形队列实现过程解析

    这篇文章主要介绍了java数组实现队列及环形队列实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码内容 ArrayQueue---用数 ...

  2. java 数据结构_Java版-数据结构-队列(数组队列)

    前言 看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友,都给予了笔者一致的好评,在这里笔者感谢大家的认可!!! 由于本章介绍的数据结构是 队列,在队列的实现上会基于前面写的 动态数组来实现, ...

  3. java数组实现队列_使用数组在Java中进行队列实现

    java数组实现队列 什么是队列? (What is a Queue?) Queue is a special type of data structure, which is designed to ...

  4. java object 数组_Java用Object实现数组队列的泛思与理解

    1.数组队列:能够限定只存一种数据或(不限定数据类型)同时存储多种数据的一个数组封装类 2.实现:使用泛型,创建对象时若指定数据类型,则只能存储一种数据,否则可以存储多种数据: 2.1.前者:类似于C ...

  5. 「Java数据结构」手撕数组队列及环形数组队列。

    目录 一.队列 1.基本介绍 2.示意图 3.队列的特点 二.数组模拟队列 1.数组队列初始化 2.判断方法 3.增删改查的方法 4.注意 三.数组模拟环形队列 1.初始化 2.判断方法 3.增删改查 ...

  6. Java数组实现循环队列

    Java数组实现循环队列 上一节(Java实现队列--顺序队列.链式队列)我们使用数组实现了顺序队列,但是在tail == n时会有数据搬移操作,这样入队操作性能就会受到影响.这里我们使用循环队列的解 ...

  7. java数组实现队列

    数组队列 用数组实现的队列,也叫循环队列.就是定义一个数组,用两个下标head,tail表示队头和队尾.当队头和队尾相等时,队列为空.当队尾+1等于队头时,队列为满. 注意tail的值,当插入一个元素 ...

  8. 数据结构--数组队列的实现

    数据结构--数组模拟队列 1. 说明 2. 实现代码 1. 数组队列类 2.数组队列测试类 3.代码运行结果 3.完整代码 1. 说明 队列是一个有序列表,可以用数组或者链表来实现. 遵循先入先出(F ...

  9. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

最新文章

  1. url-pattern / /*匹配
  2. arxiv.org经常打不开真是让人头大
  3. 四川传媒学院计算机应用技术专业,2017年四川传媒学院开设哪些专业(高职/专科)...
  4. qt添加菜单纯代码_开始玩qt,使用代码修改设计模式生成的菜单
  5. Python中报错Invalid return character or leading space in header: Cookie
  6. 拓端tecdat|R语言MCMC的rstan贝叶斯回归模型和标准线性回归模型比较
  7. JavaScript邮箱验证-正则验证
  8. CentOS7.0离线安装RHadoop
  9. 基于JAVA的旅游企业财务管理系统源码【包调试】
  10. 云计算认证哪个好?考什么内容?
  11. HttpClient RestTemplate
  12. 深度剖析Java集合之Stack
  13. 硬件系统工程师需要具备哪些技能
  14. 利用c++深究周立功usbcan盒的学习
  15. 文献解读:纵向数据的测量不变性和交叉滞后模型(一)
  16. 如何恢复删除掉的压缩文件
  17. win10下samba 重新登录注销
  18. 25年前广州街头未见“美军”
  19. 51CTO首届卡拉OK大赛:我唱,为欢聚而歌
  20. 教链一周谈20200222

热门文章

  1. 去掉右键新建菜单多余内容
  2. 数学(FFT):BZOJ 3527 [Zjoi2014]力
  3. Ubuntu10.04中间Leach协议一键安装
  4. VBA学习过程中遇到的问题(主要针对Excel)
  5. Flutter 饼状图、柱状图、拆线图、Flutter动态饼图、Flutter图表 flutter_echart 开发文档
  6. jquery中的ajax 网络请求
  7. IOS-—UICollectionView使用综述(二 )(基础篇--画廊展示图片,瀑布流展示图片)
  8. 错误的模糊应用(类继承问题)
  9. 完美解决Python与anaconda之间的冲突问题,你值得拥有
  10. Python基础——6面向对象编程