队列-循环队列及其实现

本文介绍了队列的概念,特别是循环队列的特点。队列是一种先进先出的数据结构,循环队列解决了顺序队列的假溢出问题。文章讨论了如何在Java中实现循环队列接口,包括入队、出队等操作,并提出了判断队空和队满的三种方法。
摘要由CSDN通过智能技术生成

概念:队列也是一种特殊的线性表,它的特殊性在于队列置允许在表尾插入数据元素,在表头删除数据元素,所以队列也是一种操作受限的线性表,它具有先进先出的特性。

允许进行插入的一端称为队尾(rear),允许进行删除的一端称为队首(front),队列的插入操作通常称为入队操作,队列的删除操作通常称为出队操作

——————————————-

队列的抽象数据类型描述:
队列的基本操作与栈类似,主要有以下6种操作:
–清空队列操作 clear()
—判断空操作 isEmpty()
—求队列长度 length()
—取队首操作peek()
—入队操作offer(x)
—出队操作 poll() s删除队首元素并且返回其值,若队列尾空,则返回null。

队列的抽象数据类型用java接口描述如下:
package com.queueTest;

public interface Queue
{
public void clear();
public boolean isEmpty();
public int length();
public Object peek();
public void offer(Object x) throws Exception;
public void poll();

}
这里写图片描述

顺序队列与顺序栈类似,在顺序队列的存储结构中,需要分配一块地址连续的存储区域来依次存放队列中从队首到队尾的所有元素。这样也可以使用一维数组来表示,假设数组名queueElem ,数组的最大容量是maxSize,,由于队列的入队操作只能在队尾进行,出队操作只能在队首进行,所以需要加上变量front和rear来分别指向队首和队尾元素在数组中的位置,其初始值都是0.front指向队首元素,rear指向队尾元素的下一个存储位置。

初始化队列时,令front = rear =0,入队时,直接将新的数据元素放入rear所指的存储单元中,然后将rear的值加1;出队时,直接取出front所指的存储单元数据元素的值,然后将front值加1.

如上图中,如果要继续将数据元素H入队,H应该存放于rear = 6的位置处,顺序队列则会因为数组下标越界而引起“溢出”,但此时顺序队列的首部还空出了两个数据元素的存储空间。因此,这种溢出不是因为数组空间不够而产生的溢出,这种因顺序队列的多次入队和出队操作后出现的存储空间,当不能进

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值