循环队列能充分利用空间,解决队列假上溢现象。
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数组实现循环队列的两种方法,旨在帮助读者更好地理解循环队列的实现机理和设计思想。循环队列是一种特殊的队列结构,能够充分利用数组的存储空间,避免...
Java用数组实现循环队列的示例 本篇文章展示了如何使用Java语言通过数组实现循环队列的示例。循环队列是一种特殊的队列结构,它的队头和队尾是相连的,形成一个环形结构。这种结构可以避免队列的溢出和下溢的情况,...
在编程语言中,如C、C++、Java或Python,我们可以用不同的方式实现数组循环队列。例如,在C++中,可以定义一个结构体或类,包含数组、队头和队尾指针,以及相关的成员函数来执行上述操作。在Python中,可以使用内置...
在Java中,可以使用数组配合索引来模拟循环队列。需要注意的是,循环队列需要处理两种特殊状态:空队列和满队列。判断队列是否为空,通常看队首和队尾是否指向同一位置;判断队列是否已满,需要考虑数组大小和队列...
与传统队列相比,循环队列通过巧妙地利用数组的循环特性,避免了数据移动带来的开销,从而在入队(enqueue)和出队(dequeue)操作上实现了更高的效率。 #### 基于循环数组的队列实现 循环队列的核心思想在于将...
本文将深入探讨这两个概念,并结合给定的`Array.java`文件,分析其可能包含的Java数组和队列的实现。 首先,数组是最基本的数据结构之一,它允许存储固定数量相同类型的数据。在Java中,数组通过`[]`符号定义,例如...
在Java或Android环境中,我们可以使用ArrayList或LinkedList等内置数据结构来实现循环队列,但为了更好地控制队列的头部和尾部,我们通常选择自定义一个类来实现。以下是一个简单的循环队列实现: ```java public ...
数组循环移动的基本思路是通过两次复制来实现。首先,将数组的后部分复制到一个新的临时空间,然后将前部分覆盖到原数组的末尾,最后将临时空间的内容放回数组的起始位置。假设我们要将一个长度为n的数组向左移动i个...
Java中同样可以使用类来实现循环队列,但需要注意线程安全问题,如果多线程环境下,需要加锁: ```java import java.util.Arrays; public class CycleQueue<T> { private T[] data; private int front, rear; ...
在Java中,我们可以使用数组来模拟循环队列。这里我们将讨论如何在不牺牲一个空间且不采用求模运算的情况下实现循环队列,并探讨如何优化其性能。 首先,我们看到类`circle_queue1`是循环队列的实现,它包含了一个...
学习Java数组是理解Java基础的重要一步,掌握数组的使用能够帮助开发者有效地处理和操作数据,为后续的编程学习打下坚实基础。在实际开发中,合理地利用数组和集合框架,可以实现高效、稳定和可维护的代码。
循环队列是指使用数组来实现队列的数据结构,但数组的大小是固定的,并且元素的添加和删除操作都会循环到数组的开始或结尾。 Java 中可以使用 ArrayDeque 类来实现循环队列。 ArrayDeque 类提供了多种方法来操作...
在这个Java程序中,我们看到了如何使用数组实现一个循环队列(CricleArrayQueue)。循环队列是一种特殊的线性数据结构,它通过在数组末尾与开头相连形成一个逻辑上的环形空间,解决了普通数组作为队列时可能出现的...
设以数组se[m]存放循环队列的元素,同时设变量rear 和front分别作为队头队尾指针,且队头指针指向队头前一个位置,写出这样设计的循环队列入队和出队算法。
同时,也可以使用链表结构自定义队列实现,这样有利于理解队列的工作原理。 总结来说,约瑟夫生死游戏的解决方法体现了队列数据结构在算法设计中的应用,以及如何通过编程来解决这类循环淘汰问题。通过对这个问题的...
循环队列是计算机科学中数据结构的一个重要概念,特别是在算法设计和实现中占有核心地位。...这份文档可能会涵盖循环队列的理论介绍、示例演示以及完整的C/C++或Java代码实现,帮助你更好地理解和应用循环队列。
循环队列是一种数据结构,它在数组或链表的基础上实现了队列的特点,同时通过巧妙的设计使得“出队”和“入队”的操作更为高效,尤其在处理满队列时避免了数组或链表的重新分配。以下是对这个主题的详细解释: 1. *...
在编程实现上,可扩充循环队列可以使用各种编程语言来构建,如C、C++、Java、Python等。关键在于理解和实现队列的扩展机制,以及正确处理边界条件和队列扩展时的数据迁移。在设计时,还需要考虑内存管理和并发安全...