自己实现数据结构---Queue

一.代码部分

1.定义接口:

public interface Queue<E> {

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

}

2.基于数组的实现

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

    private ArrayList<E> arrayList;
    public ArrayQueue(int capacity){
        arrayList = new ArrayList<>(capacity);
    }
    public ArrayQueue(){
        arrayList = new ArrayList<>();
    }

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

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

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

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

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

}

原文地址:https://www.cnblogs.com/inspred/p/queue.html

时间: 2024-08-08 17:56:25

自己实现数据结构---Queue的相关文章

数据结构 - Queue、Deque 接口

简介 队列是一种特殊的线性表.队列有单向队列和双向队列,队列内部结构多大使用数组和链表存储,一般使用数组存储的都会有初试长度和最大长度等,一般使用链表存储没有长度限制.平时在使用中最好不要像队列中插入null(通常也不允许,LinkedList除外),因为null值通常用于poll方法表示当前队列没有元素了,插入null值poll就有歧义. Queue 接口 public interface Queue<E> extends Collection<E> Queue继承Collect

hdu 1972.Printer Queue 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1972 题目意思:需要模拟打印机打印.打印机里面有一些 job,每个job被赋予1-9的其中一个值,越大表示优先级越高,越早被打印.job这个队列是会向前推进的,如果排在最前面的job优先级最高,那么才打印,否则就把这个job放到队列最后.问给出 m 这个位置的job要经过多长时间才被打印. 规定每次打印时间为一分钟,移动 job到队列最后不占时间. 练开优先队列就继续吧---不过这题不是咯. 仅仅用

php内置的数据结构函数使用小事例

1.栈数据结构 $stack = new splstack(); $stack->push("data1"); $stack->push("data2"); echo $stack->pop();echo "<br/>"; ehco $stack->pop(); 特点:先进后出 输出: data2 data1 2.队列数据结构 $queue = new splQueue(); $queue->ecqueu

Java并发编程-总纲

Java 原生支持并发,基本的底层同步包括:synchronized,用来标示一个方法(普通,静态)或者一个块需要同步执行(某一时刻,只允许一个线程在执行代码块).volatile,用来标识一个变量是共享变量(线程不缓存),更新和读取是原子的.wait,线程等待某一个Object上的事件(notify事件,线程挂起,释放锁),需要在synchronized区中执行.notify,事件发生后,通知事件,通知一个挂起的线程,需要在synchronized区中执行.notifyAll,事件发生后,通知

Python简单线程间通信

本节主要举一个简单的线程间通信的例子,利用线程安全的数据结构queue.Queue保存线程间通信的内容, import queue from threading import Thread from random import randint class WriteThread(Thread): def __init__(self,sid,queue): Thread.__init__(self) self.sid = sid self.queue = queue def run(self):

Java中的队列都有哪些,有什么区别?

Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Deque接 口. 1.未实现阻塞接口的: LinkedList : 实现了Deque接口,受限的队列 PriorityQueue : 优先队列,本质维护一个有序列表.可自然排序亦可传递 comparator构造函数实现自定义排序. ConcurrentLinkedQueue:基于链表 线程安全的队列.增加删除O(1) 查找

2018面试题记录

1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问题 var num = 10; var obj = { num:8, inner: { num: 6, print: function () { console.log(this.num); } } } num = 888; obj.inner.print(); // 6 var fn = obj.inner.print; fn();

nodejs的事件循环1

JavaScript的学习零散而庞杂,因此很多时候我们学到了一些东西,但是却没办法感受到自己的进步,甚至过了不久,就把学到的东西给忘了.为了解决自己的这个困扰,在学习的过程中,我一直试图在寻找一条核心的线索,只要我根据这条线索,我就能够一点一点的进步. 前端基础进阶正是围绕这条线索慢慢展开,而事件循环机制(Event Loop),则是这条线索的最关键的知识点.所以,我就马不停蹄的去深入的学习了事件循环机制,并总结出了这篇文章跟大家分享. 事件循环机制从整体上的告诉了我们所写的JavaScript

2017、2018面试分享(js面试题记录)记得点赞分享哦;让更多的人看到~~

2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问题 var num = 10; var obj = { num:8, inner: { num: 6, print: function () { console.log(this.num); } } } num = 888; obj.inner.print(); // 6 var fn = obj.