1: 先进先出 队列的实现:
first结点 负责出队
last结点 负责入队
package com.algorithm.common; import java.util.Iterator; import java.util.NoSuchElementException; /** * 先进先出队列 * @author lijunqing * @param <Item> */ public class Queue<Item> implements Iterable<Item> { private int N; // 第一个节点 private Node first; // 最后一个节点 private Node last; private class Node { private Item item; private Node next; } public Queue() { N=0; first=null; last=first; } /** * 入队 新的Node就是last * @param item */ public void enqueue(Item item) { Node oldLast=last; last=new Node(); last.item=item; last.next=null; if(isEmpty()) { // 空的時候 只有只有一个几点 first = list first=last; } else { oldLast.next=last; } N++; } /** * 出队 * @return */ public Item dequeue() { if(isEmpty()) { throw new NoSuchElementException(); } Item item=first.item; first=first.next; N--; return item; } public int size() { return N; } public boolean isEmpty() { if(first == null) { return true; } return false; } @Override public Iterator<Item> iterator() { return new ListIterator(); } private class ListIterator implements Iterator<Item> { private Node current=first; @Override public boolean hasNext() { return current != null; } @Override public Item next() { Item item=current.item; current=current.next; return item; } @Override public void remove() { throw new UnsupportedOperationException(); } } public static void main(String[] args){ Queue<String> q = new Queue<String>(); q.enqueue("123"); q.enqueue("3445"); q.enqueue("dddd"); System.out.println(q.dequeue()+" "+q.size()); Iterator<String> iterator = q.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } }
结果:
123 2 3445 dddd
相关推荐
一、线程池 1、为什么需要使用线程池 1.1 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3,如果T1+T3>T2,...2、
四:queue实现当然队列比数组更适合实现斐波那契数列,时间复杂度和空间复杂度和vector一样,但队列太适合这里了,f(n)=f(n-1)+f(n-2),f(n)只和f(n-1)和f(n-2)有关,f(n)入队列后,f(n-2)就可以出队列了
.Net Farmework中的普通队列Queue的实现使用了第一种方式,缺点是当队列空间不足会进行扩容,扩容的主要实现是开辟一个原始长度2倍的新数组,然后将原始数组里面的数据复制到新数组中,所以当扩容时就会产生不小的...
2.Python实现ADT Queue 采用List来容纳Queue的数据项 将List首端作为队列尾端;List的末端作为队列首端 enqueue()复杂度为O(n) dequeue()复杂度为O(1) class Queue: #初始化 def _init_(self): self.items=[] ...
const queue = new Queue ( 2 ) ; // OUTPUT: 1609158613385wbQvkB5djUXB debug log: A new queue 1609158613385wbQvkB5djUXB is initialized with capacity 2 queue . enqueue ( 1 ) ; // OUTPUT: 1609158613385...
2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize) 3、还有一种是优先级队列级别越低越先出来。 class Queue.PriorityQueue(maxsize) 此包中的常用方法(q = Queue.Queue()): q.qsize() 返回队列的大小 ...
一个简单的red-queue和droptail queue的源代码,在ns2上模拟实现。
@datastructures-js/队列 javascript 中的高性能队列实现。目录 。尺寸() 。克隆() .toArray() 。清除() 建造执照 安装npm ...// from an arrayconst queue = new Queue ( [ 1 , 2 , 3 ] ) ; 使用“.fromArray”
实现基于std::queue ,使用std::mutex和std::condition_variable实现线程安全。 可以使用右值引用调用Produce(T&& item)函数。 Consume(T& item)函数立即返回一个布尔值,表示成功。 ConsumeSync(T& item)方法将...
Nodejs 进程内阻塞 FIFO 队列实现。 具有最大并发的队列。 npm install block-queue 例子 var queue = require ( 'block-queue' ) ; var q = queue ( 1 , function ( task , done ) { // working on task.. ...
2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于...
Printer Queue(打印队列)POJ3125 打印机顺序打印问题 这是一道ACM算法题,上面的两个是求打印时间,还有一种是求打印顺序 输入和输出: 输入 3 1 0 5 4 2 1 2 3 4 6 0 1 1 9 1 1 1 输出 1 2 5 问题解析 输入解析 第...
邮件队列 实现电子邮件队列 所有详细信息(从、到、主题、正文)都存储在数据库中,访问它们并发送邮件。 使用了 2 个线程
2 自定义队列 http://127.0.0.1:8000/get?queueName=队列名称 获取队列内容: http://127.0.0.1:8000/getList?队列名称 http://127.0.0.1:8000/getList queueName 获取队列长度: http://127.0.0.1:8000/getLen ...
只是最可爱和最小的队列/双端队列实现! 特征 微小:约 345 字节的最小压缩! 快速:所有操作的为 Tree Shakeable:如果您不需要完整的Deque请使用Queue ! 安装 $ npm i quetie 用法 import { Queue , Deque } ...
DS队列 一个简单的队列实现。 由安装npm install --save dsq 用法var Queue = require ( 'dsq' ) ;var queue = new Queue ( ) ;queue . enqueue ( [ 1 , 2 , 3 ] ) ; // [1, 2, 3]queue . enqueue ( 4 ) ; // [1, 2,...
2RQueueUsingLinkedList:使用链接列表完成Queue的实现。 通用队列
queue.push(2); queue.peek(); // returns 1 queue.pop(); // returns 1 queue.empty(); // returns false 笔记: 您必须仅使用堆栈的标准操作——这意味着只有推到顶部、从顶部查看/弹出、大小和为空操作是有效的。...
Queue接口 – 队列1.1 ConcurrentLinkedQueue类(线程安全)2. BlockingQueue接口 – 阻塞队列2.1 ArrayBlockingQueue类(有界阻塞队列)2.2 LinkedBlockingQueue类(无界阻塞队列)3. 源码:BlockingQueue实现生产...
Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入理解LinkedHashMap和LRU缓存 Java集合详解6:TreeMap和红黑树 Java集合...