美文网首页数据结构
队列(链式队列,基于动态数组实现)

队列(链式队列,基于动态数组实现)

作者: 小小飞的救赎 | 来源:发表于2018-09-14 10:33 被阅读0次

定义一个接口

public interface Queue<E> {
    //计算队列的大小
    int getSize();
    //判空
    boolean isEmpty();
    boolean contains(E e);
    //入队
    void enqueue(E e);
    //出队
    E dequeue();
    //获得队首元素
    E getFront();
}

定义一个队列的类,继承该接口

import com.hcc.Interface.Queue;
/**
 * 链式队列(基于动态数组)
 * @author hcc
 *
 * @param <E> 泛型
 * 规定数组的开始为队首 数组的末尾为队尾 (数据从队尾进入,队首出去)
 */
public class HArrayQueue<E> implements Queue<E> {
    
    private HGenericityArrayList<E> data;
    
    public HArrayQueue() {
        data = new HGenericityArrayList<E>();
    }
    
    public HArrayQueue(int capacity) {
        data = new HGenericityArrayList<E>(capacity);
    }
    
    /**
     * 获取队列的容量
     * @return
     */
    public int getCapacity() {
        return data.getCapacity();
    }
    
    @Override
    public int getSize() {
        // TODO Auto-generated method stub
        return data.getSize();
    }

    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return data.isEmpty();
    }

    @Override
    public boolean contains(E e) {
        // TODO Auto-generated method stub
        return data.contains(e);
    }

    @Override
    public void enqueue(E e) {
        // TODO Auto-generated method stub
         data.add(e);
    }

    @Override
    public E dequeue() {
        // TODO Auto-generated method stub
        return data.remove(0);
    }

    @Override
    public E getFront() {
        // TODO Auto-generated method stub
        return data.get(0);
    }

    @Override
    public String toString() {
        StringBuilder str = new StringBuilder();
        str.append("HArrayQueue:");
        str.append("Front ");
        str.append("[");
        for(int i = 0;i < data.getSize();i++) {
            if(i == (data.getSize()-1)) {
                str.append(data.get(i));
                str.append("]");
                break;
            }
            str.append(data.get(i));
            str.append(",");
        }
        str.append(" Tail");
        return str.toString();
    }
    
}

相关文章

  • 队列(链式队列,基于动态数组实现)

    定义一个接口 定义一个队列的类,继承该接口

  • C语言数据结构——线性表链式循环队列(链表实现方式)

    队列相关知识及操作请参看上一章 C语言数据结构——线性表循环队列(动态数组实现方式) 一、链式队列 链式队列 : ...

  • Java数组实现循环队列

    Java数组实现循环队列 上一节(Java实现队列——顺序队列、链式队列)我们使用数组实现了顺序队列,但是在tai...

  • 有关“队列”的总结

    队列 定义 分类 链式队列 (用链表实现) 静态队列 (用数组实现)图静态队列通常都必须是循环队列循环队列的讲解:...

  • 实现队列_数组队列_1

    基于动态数组实现队列接口 实现类及测试 基于数组实现的队列,在出队的时候,时间复杂度为O(n),我们希望是O(1)...

  • 数组队列实现以及其出队问题

    基于动态数组的实现 用数组实现的队列,出队的时间复杂度是O(n),我们用循环队列解决

  • 队列

    基于数组的循环队列 Java实现 基于链表的队列实现 Java实现

  • 第五讲-队列

    队列:先进先出 基本操作:出队(enqueue)or入队(dequeue) 顺序队列和链式队列 用数组实现的队列叫...

  • 队列

    一种可以实现“先进先出”的存储结构。 分类: 链式队列:用链表实现; 静态队列:用数组实现,通常都是循环队列。 循...

  • 37_队列的概念及实现(下)

    关键词:队列的链式存储实现、链式队列的设计要点、队列链式存储实现的优化、LinkQueue.h 0. 队列的链式存...

网友评论

    本文标题:队列(链式队列,基于动态数组实现)

    本文链接:https://www.haomeiwen.com/subject/ignngftx.html