java数据结构——双端队列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yoonerloop/article/details/82430762

 

普通队列是一端进,另一端出的FIFO形式,而双端队列就没有这样的限制级,也就是我们可以在队列两端进行插入或者删除操作。接下来使用双端链表来实现一个双端队列。

1、引进双向链表

地址:https://blog.csdn.net/yoonerloop/article/details/81516166

2、构造方法

public class DoublesEndQueue {

    private DoubleLinkedList linkedList;

    public DoublesEndQueue() {
        linkedList = new DoubleLinkedList();
    }
}

3、添加队列

    /**
     * 插入元素
     */
    public void add(String data){
        if (data == null){
            throw  new NullPointerException();
        }
        if (data.isEmpty()){
            throw new IllegalArgumentException();
        }
        linkedList.insert(data);
    }

4、删除队列:从队头删除

    /**
     * 删除元素:从前端删除
     */
    public String deleteHead() {
        return linkedList.deleteHead().data;
    }

5、删除队列:从队尾删除

    /**
     * 删除元素:从尾部删除
     */
    public String deleteTail(){
        return linkedList.deleteTail().data;
    }

6、查看队列

    /**
     * 查看队列
     */
    public void display(){
        linkedList.displayAll();
    }

7、查看队头

    /**
     * 查看队头
     */
    public String getFront() {
        return linkedList.getTailNode().data;
    }

8、查看队尾

    /**
     * 查看队尾
     */
    public String getEnd() {
        return linkedList.getHeadNode().data;
    }

9、查看队列元素个数

    /**
     * 查看队列里面几个元素
     */
    public int size() {
        return linkedList.length();
    }

10、队列是否为空

    /**
     * 队列是否为空
     */
    public boolean isEmpty() {
        return linkedList.isEmpty();
    }

下一篇将介绍环形队列。

猜你喜欢

转载自blog.csdn.net/yoonerloop/article/details/82430762