- Simple queue
- With front always at zero
- Linked queue
- Priority Queues
- Max Priority
- Min Priority
A queue is a FIFO structure – First In First Out. A queue is a data structure in which insertion of a new element is done at the rear end and deletion of an element is done at the front end of the queue. Hence, it is different from the stack, since it uses both the ends to perform insertion and deletion rather than using only one end for these operations. The operations on queue are similar to those of stack. Enqueue operation represents insertion of a new element in the queue and Dequeue operation represents deletion of an element from the queue.
Queue may be represented using arrays or linked list. Array representation involves keeping track of two positions via. subscript for front and rear, whereas linked list involves two pointers, one positioned at the front end of the queue and the other positioned at the rear end of the queue.
i) Array representation of queue: Queues may be representated using arrays as follows:
- Program to implement a Queue using Array with front always at zero
- Program to implement a Queue using Array by incrementing front as well as rear
ii) Linked list implementation of queue: Linked list may also be used to represent a queue as follows:
- Program to implement Linear Queues using Linked List
- Program to implement Linear Queues using Linked list using global front and rear pointers
A double ended queue allows fast insertion and deletion at the beginning as well as at the end of the queue. It supports all the operations applicable for an ordinary queue. But, enqueue may be done at front end too and dequeue may be done at rear end.
In a priority queue, the elements are dequeued according to their priority and their current queue position. Priority may be assigned to elements such that dequeue operation may be based on priority. Thus, it is not necessary in a priority queue, that the element at the front position is the candidate for deletion. Priorities may be assigned such that higher priorities may be associated with lower numbers and lower priorities may be associated with higher numbers or vice-versa. The elements may be arranged at the time of entry or using some ordering function. Two versions of priority queues may be implemented in general. First one is Max priority queue and the second one is Min priority queue.
In a max priority queue, each element is assigned a priority. The element to be dequeued is the element with the max priority. The elements are extracted in the descending order of priority. The program to implement max priority queue is as follows-
ii) Min Priority Queue:
In a min priority queue, each element is assigned a priority. The element to be dequeued is the element with the min priority. The elements are extracted in the ascending order of priority. The program to implement min priority queue is as follows-