数据结构-队列

队列,是一种先进先出的 数据结构,类似于 排队取票, 排在前面的先取票

使用java数组实现简单的队列  ,当然,也可以用链表实现

public class Queue {

    private Integer[] elements;
    private int items;
    private int size;
    private int front;
    private int tail;

    public Queue(int size) {
        this.size = size;
        this.elements = new Integer[size];
        tail = -1;
        front = 0;
    }

    public void offer(Integer ele) {
        if (isFull()) {
            throw new RuntimeException("is full");
        }
        if (tail == size - 1) {
            tail = -1;
        }
        elements[++tail] = ele;
        items++;
    }

    public Integer pop() {
        if (isEmpty()) {
            throw new RuntimeException("not element");
        }
        if (front == size) {
            front = 0;
        }
        Integer ele = elements[front++];
        items--;
        return ele;
    }

    public boolean isEmpty() {
        return items == 0;
    }

    public boolean isFull() {
        return items == size;
    }

    public Integer peek() {
        return elements[front];
    }

    public static void main(String[] args){
        Queue queue=new Queue(4);
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        queue.offer(4);
        System.out.println(queue.pop());
        System.out.println(queue.pop());
        System.out.println(queue.pop());
        queue.offer(7);
        queue.offer(8);
        queue.offer(9);
        System.out.println(queue.pop());
        System.out.println(queue.pop());
        System.out.println(queue.pop());
        System.out.println(queue.pop());
    }

}

此处是固定了长度的队列,也可以使用 扩容,比如当到达了maxsize就扩容一倍,

此队列是一种循环式的,当不断添加元素,下标会重新从 开始。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值