循环队列

队列是一种先进先出的数据结构,插入操作发生在队列尾部,删除操作发生在队列头部。

package dataStructure.sortTest;

/**
 * 队列
 *
 * @author lyq
 * @create 5/6/19
 */
public class MyQueue {

    /**
     * 存放数据的数组
     */
    private int[] data;

    /**
     * 队列大小
     */
    private int size;

    /**
     * 队列中元素个数
     */
    private int num;

    /**
     * 头指针
     */
    private int head;

    /**
     * 尾指针
     */
    private int tail;

    public MyQueue(int size) {
        this.size = size;
        data = new int[size];
        num = 0;
        head = 0;
        tail = -1;
    }

    /**
     * 插入元素
     */
    public void insert(int n){
        if (isFull()) {
            System.out.println("队列已满!");
            return;
        }
        //循环队列的保证
        tail = (++tail)%size;
        data[tail] = n;
        num++;
    }

    /**
     * 移除元素队列头部元素并返回当前队列头部元素,
     */
    public int remove(){
        if (isEmpty()) {
            System.out.println("队列为空!");
            return -1;
        }
        head = head%size;
        num--;
        return data[head++];
    }

    /**
     * 获取队列头部元素
     */
    public int peek(){
        if (isEmpty()) {
            System.out.println("队列为空!");
            return -1;
        }
        return data[head];
    }

    /**
     * 判断队列是否已满
     * @return
     */
    public boolean isFull() {
        return num == size;
    }

    /**
     * 判断队列是否为空
     */
    public boolean isEmpty(){
        return num == 0;
    }
    
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值