实现队列_数组队列_1

基于动态数组实现队列
接口

package com.company.queue;

public interface Queue<E> {

    int getSize();
    boolean isEmpty();
    void enqueue(E e);
    E dequeue();
    E getFront();
}

实现类及测试

package com.company.queue;

import com.company.Array;

/**
 * @program: Array
 * @description: 数组实现队列,先进先出策略
 * @author: Gu
 * @create: 2019-04-14 21:23
 **/

public class ArrayQueue<E> implements Queue<E>{

    private Array<E> array;

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

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

    @Override
    public int getSize() {
        return array.getSize();
    }

    @Override
    public boolean isEmpty() {
        return array.isEmpty();
    }

    @Override
    public void enqueue(E e) {
        array.addLast(e);
    }

    @Override
    public E dequeue() {
        return array.removeFirst();
    }

    @Override
    public E getFront() {
        return array.get(0);
    }

    @Override
    public String toString() {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(String.format("ArrayQueue的size: %d, capacity : %d \n",getSize(), array.length()));
        stringBuffer.append("front [");
        for (int i = 0; i < getSize(); i++) {
            stringBuffer.append(array.get(i));
            if (i == getSize() - 1) {
                stringBuffer.append("] end");
                break;
            }
            stringBuffer.append(",");
        }
        return stringBuffer.toString();
    }

    public static void main(String[] args) {
        ArrayQueue<Integer> arrayQueue = new ArrayQueue();
        for (int i = 0; i < 10; i++) {
            arrayQueue.enqueue(i);
        }
        System.out.println(arrayQueue);
        System.out.println(arrayQueue.dequeue());
        System.out.println(arrayQueue.getFront());
        System.out.println(arrayQueue);
    }
}

基于数组实现的队列,在出队的时候,时间复杂度为O(n),我们希望是O(1),从而引入第二部分,循环队列。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 整理|零露 唐诗是一种美学,所谓的美学是说不至在写诗,也在营造诗句的过程中完成一种对生命平衡的追求。比如说感性和理...
    零露_清扬婉兮阅读 1,501评论 1 3
  • 不知从什么时候开始,自己不光物质匮乏,精神也变得极度匮乏,原来还能田园诗中游,对一切没有太多抱怨,享受并喜...
    蒋栖子阅读 389评论 0 0
  • 急急慌慌过凌晨, 嘀嗒嘀嗒身心困; 可怜大事方兴始, 如此卖命为成仁。
    渤海利剑阅读 112评论 3 5
  • “知识改变命运”这句话基本上人人都知道,但是到底什么是知识,我们上了这么多年的书到底改变命运了吗?“读书无用论”为...
    夏末花未落_2f2f阅读 802评论 0 0