定义
队列是一种插入在队尾,删除在队头的一种表。用数组实现,下标大的是队尾,下标小的是对头。用链表实现,一个箭头从上一个节点指向下一个节点,没有前向指向(前驱)的是队头,没有后向指向(后继)的是队尾。FIFO,先进先出,在对头的元素是进入队列时间最长的,在队尾的元素是进入队列时间最短的。
队列的基本操作(ADT)
enqueue(T element);
T dequeue();
实现
队列可以用数组或者链表实现。每种操作O(1)运行时间。队列的数组实现中注意循环数组使用。
Java中Queue的实现有LinkedList,(PriorityQueue,LinkedBlockingQueue,ArrayBlockingQueue 这几种是阻塞队列不知道算不算)。
应用
1 用于图论。后面学习。
2 web服务器请求队列。
3 排队论。例如银行柜员的服务。如果只有一个柜员提供服务。要办事的人到达银行符合一定规律。每个人需要服务的时间有一个平均值。人们能容忍的等待时间有个值。怎么才能做到服务好每一位顾客,是银行要考虑的。进一步:如果是多个柜员提供服务,如何确定几个柜员。
此外队列还有双端队列(Double-ended Queue),支持在队头插入、删除,在队尾插入、删除。Dequ