java实现队列MyQueue,底层使用数组实现

/**
 * 队列的接口
 * 队列是一种先进先出的数据结构
 * 队列支持的操作:
 * 判断队列是否为空
 * 判断队列是否已经满了
 * 查看队列已经有多少元素
 * 将一个元素入队
 * 将一个元素出队
 * 查看队头的元素,但不出队
 * 队列在底层可以用数组实现,也可以用链表实现
 * 但不管实现方式如何,都必须满足此接口中的规定
 */
public interface MyQueue<Item> extends Iterable<Item>{
    /**
     * 判断队列是否为空
     * @return 如果队列为空,则返回true;否则,返回false
     */
    public boolean isEmpty();

    /**
     * 判断队列是否为满,满了返回true,否则返回false
     * @return
     */
    public boolean isFull();

    /**
     * 返回队列中元素的个数
     * @return 个数
     */
    public int size();

    /**
     * 入队,将一个元素入队
     * @param item 待入队的元素
     * @return 入队成功返回true,否则返回false
     */
    public boolean enqueue(Item item);

    /**
     * 将一个元素出队
     * @return  出队成功返回出队的元素,否则返回null
     */
    public Item dequeue();

    /**
     * 查看队列头部的元素,但不出队
     * @return 队列头部的元素,如果没有元素,返回null
     */
    public Item get();
}

以上是队列的接口,接下来用数组来实现队列。

/**
 * 队列的具体实现,底层使用数组实现
 * 数组的实现也分几种情况
 *版本1中,维护两个索引,front和rear
 * 初始状态front和rear都在-1的位置(假想有-1的位置)
 * 第一个元素入队的时候,front=0、rear++、再入队
 * 出队的时候,正常情况下front++就可以,但是当front和rear相同的时候出队,那么就把front和rear初始化为-1
 * 队列空的条件为front=-1;
 * 队列满的条件为(rear+1)%maxsize==front
 * Queue还要满足foreach的自动迭代,所以需要实现Iterable<Item>接口
 */
public class ArrayQueueVersion1<Item> implements MyQueue<Item>{
    private Item[] items;
    private int front;
    private int rear;
    private int maxsize;
    public ArrayQueueVersion1() {
        thi
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值