九 、循环队列的java实现

原理:

接上一回队列的问题,上节队列弹出之后再插入会报出数组越界。所以这节改成循环队列。

所谓循环队列就是删除到队尾后重新指向队头,插入数据满了之后重新指向队头,实现一个循环。

运行结果图:

可以看出弹出全部的数据后,是可以重新插入数据的。而且重新插入的数据是可以重新弹出的。因此这个循环队列是有效的!!!

下面甩出源代码,其实也就是在上节队列的基础上对于插入数据和删除数据进行一个判断。

public class MycycleQueue {
private int[] array; //底层数组
private int elements; //有效数据个数
private int font ; //队头
private int end ; //队尾

public MycycleQueue() {
// TODO Auto-generated constructor stub
array = new int[5];
elements =0;
font = 0;
end =0;
}
public MycycleQueue(int Maxsize) //重载构造
{
array = new int[Maxsize];
elements =0;
font = 0;
end =0;
}
public void insert(int value) //插入数据
{
if(end == array.length)
end = 0;
array[end++] =value;
elements++;

}

public int remove() //删除数据
{
if(font == array.length)
font =0;
elements--;
return array[font++];
}
public void peek() //查看队头数据
{
System.out.println(array[font]);
}
public boolean IsEmpty() //判断是否为空
{
return elements ==0;
}
public boolean IsFull() //判断是否为满
{
return elements == array.length;
}
}

原文地址:https://www.cnblogs.com/fyz666/p/8458227.html

时间: 2024-11-08 10:41:44

九 、循环队列的java实现的相关文章

队列及循环队列(Java实现)

package ch03; /* * 队列类 */ public class MyQueue { // 底层实现是一个数组 private long[] arr; // 有效数据大小 private int elements; // 队头 private int front; // 队尾 private int end; /** * 默认构造方法 */ public MyQueue() { arr = new long[10]; elements = 0; front = 0; end = -1

Java实现循环队列

一.分析 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.允许插入的一端称为队尾,允许删除的一端称为队头. 循环队列是一种以顺序存储结构表示的队列,为了解决“假溢出”问题而将它设计成头尾相接的循环结构,它的基本操作如下: 1.初始化循环队列 2.销毁循环队列 3.清空循环队列 4.检测循环队列是否为空 5.返回循环队列的元素个数 6.返回循环队列头元素 7.向队尾插入元素 8.删除并返回队头元素 9.遍历循环队列 在循环队列中,除了用一组地址连续的存储单元依次存储从队

【数据结构】之队列的java实现(一)

队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear).(3)当队列中没有元素时称为空队列.(4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表. 队列的修改是依先进先出的原则进行的.新来的成员总是加入队尾,每次离开的成员总是队列头上的(不允许中途离队). 队列的存储结构及实现 队列的顺序存储结构 (1) 顺序队列的定义: 队列的顺序存储结构称为

数据结构学习(循环队列)

1. 尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定 2. 这个在做判断队列满的时候需要注意 (rear + 1) % maxSize == front [满] rear == front [空] package cn.imut; //循环队列 import java.util.Scanner; public class CircleArrayQueueDemo { public static void main(String[] args) { System.out.prin

数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列

数据结构Java实现07----队列:顺序队列&顺序循环队列.链式队列.顺序优先队列 一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作. 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头.队列的插入操作通常称作入队列,队列的删除操作通常称作出队列. 下图是一个依次向队列中插入数据元素a0,a1,...,an-

Java用数组实现循环队列

复习了下数据结构,用Java的数组实现一下循环队列. 队列的类 1 //循环队列 2 class CirQueue{ 3 private int QueueSize; 4 private int front; 5 private int rear; 6 private int[] queueList ; 7 8 public CirQueue(int QueueSize){ 9 this.QueueSize = QueueSize; 10 queueList = new int[QueueSiz

Java数组实现循环队列的两种方法

用java实现循环队列的方法: 1.增加一个属性size用来记录目前的元素个数.目的是当head=rear的时候,通过size=0还是size=数组长度,来区分队列为空,或者队列已满. 2.数组中只存储数组大小-1个元素,保证rear转一圈之后不会和head相等,也就是队列满的时候,rear+1=head,中间刚好空一个元素:当rear=head的时候,一定是队列空了. import java.io.*; public class QueueArray { Object[] a; //对象数组,

Java数据结构系列之——队列(2):循环队列的顺序存储结构及其实现

package queue.circleSequenceQueue; /** * 这里我们规定队列满时数组中还有一个空闲空间,不允许将数组中的空间全部存满 * 循环队列满的条件是:(rear+1)%QueueSize==front * 长度计算公式为:(rear-front+QueueSize)%QueueSize * @author wl */ public class CircleSequenceQueue { Object[] elementData;//数组用于存放队列元素 int fr

Java 循环队列的实现

队列概念 队列(Queue)是限定只能在一端插入.另一端删除的线性表.允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空队列”. 队列具有先进先出(FIFO)的特性. 普通顺序队列存在的问题 在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位.出队时,则是头指针front后移一个单位.像这样进行了一定数量的入队和出队操作后,可能会出现这样的情况: 尾指针rear已指到数组的最后有一个元素,即rear==Ma