简单数组实现环形队列

package alog;

/**
 * 环形队列数组实现
 */
public class CircleQueue {

    private int front;
    private int rear;
    private int maxsize;
    private int[] data;


    public boolean isEmpty() {
        return front == rear;
    }

    public boolean isFull() {
        return (rear + 1) % maxsize == front;
    }


    public CircleQueue(int maxsize) {
        this.maxsize = maxsize+1;
        this.data = new int[maxsize+1];
    }

    public boolean addQueue(int v) {
        if (isFull()){
            System.out.println("队列已满");
            return false;
        }
        data[rear] = v;
        rear = (rear + 1) % maxsize;
        return true;
    }

    public int takeQueue() {
        int result;
        if (isEmpty()) return -1;
        result = data[front];
        front = (front + 1) % maxsize;
        return result;
    }


    public void show() {

        for(int i =front;i!=rear;i=(i+1)%maxsize){
            System.out.print(data[i]+",");
        }
        System.out.println("");
    }

    public int size() {

        return (rear + maxsize - front) % maxsize;


    }


    public static void main(String[] args) {
        CircleQueue queue = new CircleQueue(6);
        queue.addQueue(10);
        queue.addQueue(11);
        queue.addQueue(12);
        queue.addQueue(13);
        queue.addQueue(15);
        queue.addQueue(14);
        queue.addQueue(16);
        queue.addQueue(17);
        queue.addQueue(18);
        queue.addQueue(19);
        queue.addQueue(20);
        int i = queue.takeQueue();
        System.out.println("队列提取数据:"+i);
        i = queue.takeQueue();
        System.out.println("队列提取数据:"+i);
        queue.addQueue(21);
        queue.show();
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值