使用数组来实现循环队列

本文介绍了如何使用Java语言基于数组实现循环队列。队列是一种先进先出的线性结构,文章详细阐述了队列的接口设计以及循环队列的具体实现,包括添加元素、移除元素和查看队列状态等操作。
摘要由CSDN通过智能技术生成


使用数组来实现循环队列

队列

我们知道,在计算机科学中,程序本质上就是数据结构加上算法。数据结构是计算机存储、组织数据的方式。一般来讲,数据结构按照数据的逻辑结构分为线性结构和非线性结构两种。几乎所有的线性结构都是建立在两种最基本的结构上的:内存中连续存储的数组结构以及内存中分散存储的链表结构。

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是先进先出的线性结构,而栈(stack)是先进后出的线性结构。

队列作为一种线性结构,既可以使用数组来实现,也可以用链表进行实现,本文就用Java语言以数组为基础完成一个循环队列的实现。

队列的接口

基于队列的特点,我们简单的为我们的队列创建一个接口,规定该队列需要实现的方法。

package com.hebin.datastructure.queue;

public interface IQueue {
   
    public void add(int a);

    public int get();

    public void show();

}

我们创建的是一个存储int数字的队列,需要有从后端增加数字、从前端取出数字,查看队列元素等方法。

循环队列的实现

分析队列和数组的特点,我们知道,数组是无法变更大小的,并且数组元素下标必须从0开始,最大不能大于(数组数量-1)。

/**
 * 使用数组来实现循环队列,队列本质上是一个数组。
 * 队列的特点是先进先出,后进后出;增加元素添加到队列尾部,取出元素从头部获取。
 */
public class MyArrayQueue implements IQueue {
   
    // 队列的最大容量
    private int maxSize;
    // 循环队列的当前容量size;
    private int size;
    //循环队列的队头坐标,每次取出数据,该标志位向后移动一位,位于数组尾部时,移动到数组头部
    private int front;
    //循环队列的队尾坐标,每次增加数据,该标志位向后移动一位,位于数组尾部时,移动到数组头部
    private int end;
    // 队列的本体,是一个数组
    private int[] array;
    
     /**
     * 队列的构造函数
     * @param maxSize 指定队列的最大元素个数
     */
    public MyArrayQueue(int maxSize) {
   
        // 队列的初始大小为0
        this.size = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值