数据结构之Queue

涉及的Array类请看数据结构之JAVA数组重写

package com.ws.scala;

/**
 * 队列 Queue
 * 队列也是一种线性数据结构; 相比数组,队列对应的操作是数组的子集
 * 只能从一端 (队尾) 添加元素,只能从另一端 (队首) 取出元素
 * 队列是一种先进先出的数据结构(先到先得); First In First Out (FIFO)
 */
public interface MyQueue<E> {

    //入队 队尾插入
    void enqueue(E e);

    //出队 移除队首
    E dequeue();

    //查看队首元素
    E getFront();

    //查看队列大小
    int getSize();

    //队列是否为空
    boolean isEmpty();

}

package com.ws.scala;

public class ArrayQueue<E> implements  MyQueue<E> {
    private Array<E> array ;

    public ArrayQueue(){
        array = new Array<>();
    }

    public ArrayQueue(int capacity){
        array = new Array<>(capacity);
    }

    //时间复杂度 O(1)
    public int getCapacity(){
        return array.getCapacity();
    }

    //时间复杂度 O(1),考虑插入队尾的时候扩容,平摊为O(1)
    @Override
    public void enqueue(E e) {
        array.addLast(e);
    }

    //时间复杂度为O(n)
    @Override
    public E dequeue() {
        return array.removeFirst();
    }
    //时间复杂度为O(1)
    @Override
    public E getFront() {
        return array.getValue(0);
    }
    //时间复杂度为O(1)
    @Override
    public int getSize() {
        return array.getSize();
    }
    //时间复杂度为O(1)
    @Override
    public boolean isEmpty() {
        return array.getSize() == 0 ? true : false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值