循环队列能充分利用空间,解决队列假上溢现象。
import java.io.*;
public class QueueArray {
Object[] a;
/*对象数组,队列最多存储a.length-1个对象,浪费一个存储单元。这是因为如果将数组装满,则队列满和队列空的条件都是: rear=front
*为了便于判断,将队列满的条件改为:(rear+1)%a.length=front,这样便要浪费一个存储单元。
*队列空的条件仍是: rear=front
*/
int front; //队首下标
int rear; //队尾下标
public QueueArray(){
this(10); //调用其它构造方法
}
public QueueArray(int size){
a = new Object[size];
front = 0;
rear =0;
}
/**
* 将一个对象追加到队列尾部
* @param obj 对象
* @return 队列满时返回false,否则返回true
*/
public boolean enqueue(Object obj){
if((rear+1)%a.length==front){
return false;
}
a[rear]=obj;
rear = (rear+1)%a.length;
return true;
}
/**
* 队列头部的第一个对象出队
* @return 出队的对象,队列空时返回null
*/
public Object dequeue(){
if(rear==front){
return null;
}
Object obj = a[front];
front = (front+1)%a.length;
return obj;
}
public static void main(String[] args) {
QueueArray q = new QueueArray(4);
System.out.println(q.enqueue("张三"));
System.out.println(q.enqueue("李斯"));
System.out.println(q.enqueue("赵五"));
System.out.println(q.enqueue("王一"));//无法入队列,队列满
for(int i=0;i<4;i++){
System.out.println(q.dequeue());
}
}
}
运行结果:
true
true
true
false
张三
李斯
赵五
null
下载源码:
分享到:
相关推荐
java数组实现循环队列。包括入队, 出队,输出队列。 队列先入先出。
下面小编就为大家带来一篇Java用数组实现循环队列的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家分享一篇基于Java数组实现循环队列的两种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
设以数组se[m]存放循环队列的元素,同时设变量rear 和front分别作为队头队尾指针,且队头指针指向队头前一个位置,写出这样设计的循环队列入队和出队算法。
//循环队列 function CircleQueue(size){ this.initQueue(size); } CircleQueue.prototype = { //初始化队列 initQueue : function(size){ this.size = size; this.list = new Array(); this.capacity = size + 1; ...
约瑟夫生死游戏 常见于队列的练习 属于经典算法
主要介绍了java数据结构与算法之双向循环队列的数组实现方法,结合实例形式分析了双向循环队列的原理与数组实现技巧,并附带说明了该算法的用途,需要的朋友可以参考下
编程珠玑上第二章问题A的实现,杂技法,3次反转法
java代码使用数组模拟循环队列
问题:实现一个循环队列 递归 问题:编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2) 问题:编程实现求阶乘n! 排序 问题:实现归并排序、快速排序、插入排序、冒泡排序、选择排序 问题:编程实现O(n)时间复杂度内...
基于数组实现:ArrayDeque 内部使用循环数组来存储元素。这种实现方式使得在两端进行插入和删除操作时具有较高的效率。 不允许存储 null 元素:与大多数Java集合不同,ArrayDeque 不允许存储 null 元素。如果试图...
Java程序设计基础\ 线性表 栈和队列 串 数组和广义表 树和二叉树 图 查找 排序
栈和队列2-1 栈的基本实现2-2 栈的另一个应用:括号匹配2-3 数组队列Java2-4 循环队列Java第三章 最基础的动态数据结构:链表章节Java源码3-1 链表的基本实现Java3-2 使用链表实现栈Java3-3 带有尾指针的链表:使用...
循环队列 最大堆 优先队列 双向链表 二分搜索树 基于二分搜索树的集合 基于链表的集合 基于链表的映射 基于二分搜索树的映射 线段树 字典树 并查集(基于数组索引) 并查集(基于树) 并查集(使用节点size优化) 并...
【队列Queue】队列 Queue、双端队列 DeQueue、循环队列 CircleQueue、双端循环队列 CircleDeque 源码实现(Java) 【栈Stack】栈 Stack 源码 【二叉搜索树BST】二叉搜索树 BST 实现源码 【AVL树】AVLTree 实现源码 ...
用java实现多线程并发中的读者与写者问题,能够实现多线程对临界资源的同步有序访问。 具体实现为: 给定一个队列A[1-10][1-100000]、元素编号1-10,其中每个元素包含10万个随机数。创建若干个线程,各循环100次;...
# 主要设计 1、业务对象模型(“找对象”,理清对象之间的...6、循环显示不同的图片:不断对Index进行自增取余运算,就类似于数据结构中的循环队列那样处理即可。 需要技术指导,写项目程序,等更多服务请私信联系博主
循环队列 哈希表(HashTable) 树形数据结构 二叉树(BinaryTree)、二叉搜索树(BinarySearchTree、BST) 平衡二叉搜索树(BalancedBinarySearchTree、BBST) AVL树(AVLTree)、红黑树(RebBlackTree) B树(B-...
用数组实现约瑟夫出圈问题。 n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。对于给定的n,m,编写程序求出所有人的出圈顺序。