| Index: > A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
|
|||||
In providing services to people, and in computer science, transportation, and operations research a queue is a First-In-First-Out FIFO process — the first element in the queue will be the first one out. This is equivalent to the requirement that whenever an element is added, all elements that were added before have to be removed before the new element can be removed.
This article discusses the queue data structure.
One characteristic of a queue is that it does not have a specific
capacity. Regardless of how many elements are already contained, a newelement can always be added. It can also be empty, at which point removing an element will be impossible until a new element has been added again.
A practical implementation of a queue usually does have some capacity limit, that depends on the concrete situation it is used in. For a data structure the executing computer will eventually run out of memory, thus limiting the queue size. For a waiting queue of people, eventually there might not be enough space to squeeze into, or people might decide that the queue is alredy too long and not bother adding themselves to it.
In computer science, compare:
The following functional implements queues as a persistent data structure, representing the queue as a pair of lists. The queue elements are the elements in the front followed by (in reverse order) the elements in the back. The time for enqueue and dequeue are O(1) amortized time.
(define make-queue cons) (define queue-front car) (define queue-back cdr) (define empty-queue (cons '() '())) (define (enqueue Q x) (make-queue (queue-front Q) (cons x (queue-back Q)))) (define (dequeue Q) (cond [(and (null? (queue-front Q)) (null? (queue-back Q))) (error "dequeue: The queue is empty")] [(null? (queue-front Q)) (dequeue (make-queue (reverse (queue-back Q)) '()))] [else (values (car (queue-front Q)) (make-queue (cdr (queue-front Q)) (queue-back Q)))]))The Oroogu programming languageThe Oroogu programming language was created by Georg Kraml, maintainer of the Encyclopedia of Stupid Languages. The language uses the queue as its only datatype, and the "while not empty" loop as its only control structure. Despite these limitations, it i relies on queues as its only data structure