java数组实现队列
数组队列
用数组实现的队列,也叫循环队列。就是定义一个数组,用两个下标head,tail表示队头和队尾。当队头和队尾相等时,队列为空。当队尾+1等于队头时,队列为满。
注意tail的值,当插入一个元素时tail=1 szie=1,两个时tail=2 size=2,三个时tail=0 size=3,四个时报错“is full”
package Algorithm;
public class QueueByArray {
private Object[] queue;
final static int DEFAULT_MAX_SIZE = 100;
int length, head, tail;
private void init() {
queue = new Object[length];
head = tail = 0;
}
QueueByArray() {
length = DEFAULT_MAX_SIZE;
init();
}
QueueByArray(int size) {
length = size;
init();
}
public boolean isFull() {
return size() == length;
}
public boolean isEmpty() {
return size() == 0;
}
public int size() {
if (queue[tail] != null && tail == head) {
return length;
}
return (tail - head + length) % length;
}
public void clear() {
queue = null;
queue = new Object[length];
}
// in queue
public void put(Object o) throws Exception {
if (isFull()) {
System.out.println(head);
System.out.println(tail);
throw new Exception("the queue is full!");
} else {
queue[tail] = o;
tail = (tail + 1) % length;
}
}
// out queue
public Object get() throws Exception {
if (isEmpty()) {
throw new Exception("the queue is empty!");
} else {
final Object o = queue[head];
queue[head] = null;
head = (head + 1) % length;
return o;
}
}
public static void main(String[] args) throws Exception {
final QueueByArray myqueue = new QueueByArray(3);
for (int i = 111; i < 114; i++) {
myqueue.put(i);
}
System.out.println("head==" + myqueue.head + ";tail==" + myqueue.tail + ";size=="
+ myqueue.size());
while (myqueue.size() > 0) {
System.out.println(myqueue.get());
}
}
}
输出:
head==0;tail==0;size==3
111
112
113
java数组实现队列的更多相关文章
- Java数组模拟队列 + 优化
队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则. 即:先存入队列的数据,要先取出.后存入的要后取出 示意图:(使用数组模拟队列示意图) 数组模拟队列 队列本身是有序列表 ...
- Java数组模拟队列
队列 先进先出 什么意思呢? 我的理解:队列就是一个数组(不包含链表),然后我们给它施加一个存数据和取数据的规则 当只允许从一端存数据,从另一端取数据的数组,就是队列,我们要做的就是给这个数组施加我们 ...
- Java数组实现循环队列的两种方法
用java实现循环队列的方法: 1.添加一个属性size用来记录眼下的元素个数. 目的是当head=rear的时候.通过size=0还是size=数组长度.来区分队列为空,或者队列已满. 2.数组中仅 ...
- 【学习总结】java数据结构和算法-第三章-稀疏数组和队列
相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二 ...
- Java多线程 阻塞队列和并发集合
转载:大关的博客 Java多线程 阻塞队列和并发集合 本章主要探讨在多线程程序中与集合相关的内容.在多线程程序中,如果使用普通集合往往会造成数据错误,甚至造成程序崩溃.Java为多线程专门提供了特有的 ...
- Java 中的队列 Queue
一.队列的定义 我们都知道队列(Queue)是一种先进先出(FIFO)的数据结构,Java中定义了java.util.Queue接口用来表示队列.Java中的Queue与List.Set属于同一个级别 ...
- Java-杂项:Java数组Array和集合List、Set、Map
ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...
- java实现顺序队列
package queue; import java.util.Scanner; public class ArrayQueueLoop { public static void main(Strin ...
- Java集合--阻塞队列及各种实现的解析
阻塞队列(Blocking Queue) 一.队列的定义 说的阻塞队列,就先了解下什么是队列,队列也是一种特殊的线性表结构,在线性表的基础上加了一条限制:那就是一端入队列,一端出队列,且需要遵循FIF ...
随机推荐
- WARNING: Package of target [javax.servlet.jsp.jstl.core.LoopTagSupport$1Status@7439e436] or package of member [public int javax.servlet.jsp.jstl.core.LoopTagSupport$1Status.getIndex()] are excluded!
Struts2爆出045漏洞后,将struts版本升级到了2.3.32.但是在验证时发现有些jstl循环未出现预期的结果. debug发现,数据没有问题,断定是前端页面显示出了问题.根据日志信息WAR ...
- NGUI的字体加粗效果
ngui的UILabel可以通过属性面板(inspector)设置字体的样式:加粗 倾斜 正常等. 但是如果通过这里设置了加粗,与实际的加粗不一样,ngui有一个拉伸宽度的变化. 这让人觉得很丑 .如 ...
- svn 被锁住 冲突 Can't revert without reverting children
解决 执行以下命令 D:\development\work>svn rm –-keep-local D:\development\work\ohho\common\logic\backstage ...
- docker entrypoint入口文件详解
docker entrypoint入口文件详解 pasting Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较 [k8s]args指令案例-彻底理解docke ...
- Tomcat7启动分析(三)Digester的使用(转载)
原文 http://tyrion.iteye.com/blog/1912290 前一篇文章里最后看到Bootstrap的main方法最后会调用org.apache.catalina.startup.C ...
- LeetCode 搜索二维矩阵 II
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- tools、site
notepad editer fiddler 一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据 ...
- [UE4]虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)(转载)
最终效果 由于隐私保护,不想截实际的效果图,下面给出了示意图,左边是背包A,右边是背包B,将其中的子项目从左侧拖往右侧的背包,然后在插入位置放置. 第一步: 制作一个user widget(在内容浏览 ...
- [UE4]控制台命令,生成机器人
在关卡蓝图中: 运行游戏的手,按“·”键(键盘第二行第一个键,数字1前面的一个键)呼出控制台输入界面,输入“ce 事件名称 参数值”,然后回车. 可以添加一个Trigger Box作为机器人的出生点
- echarts饼图配置
js引用和配置div <div id="container" style="height: 100%"></div> <scrip ...