Deque (or double-ended queue)In this article, we will discuss the double-ended queue or deque. We should first see a brief description of the queue. What is a queue?A queue is a data structure in which whatever comes first will go out first, and it follows the FIFO (First-In-First-Out) policy. Insertion in the queue is done from one end known as the rear end or the tail, whereas the deletion is done from another end known as the front end or the head of the queue. The real-world example of a queue is the ticket queue outside a cinema hall, where the person who enters first in the queue gets the ticket first, and the person enters last in the queue gets the ticket at last. What is a Deque (or double-ended queue)The deque stands for Double Ended Queue. Deque is a linear data structure where the insertion and deletion operations are performed from both ends. We can say that deque is a generalized version of the queue. Though the insertion and deletion in a deque can be performed on both ends, it does not follow the FIFO rule. The representation of a deque is given as follows - Types of dequeThere are two types of deque -
Input restricted Queue In input restricted queue, insertion operation can be performed at only one end, while deletion can be performed from both ends. Output restricted Queue In output restricted queue, deletion operation can be performed at only one end, while insertion can be performed from both ends. Operations performed on dequeThere are the following operations that can be applied on a deque -
We can also perform peek operations in the deque along with the operations listed above. Through peek operation, we can get the deque's front and rear elements of the deque. So, in addition to the above operations, following operations are also supported in deque -
Now, let's understand the operation performed on deque using an example. Insertion at the front end In this operation, the element is inserted from the front end of the queue. Before implementing the operation, we first have to check whether the queue is full or not. If the queue is not full, then the element can be inserted from the front end by using the below conditions -
Insertion at the rear end In this operation, the element is inserted from the rear end of the queue. Before implementing the operation, we first have to check again whether the queue is full or not. If the queue is not full, then the element can be inserted from the rear end by using the below conditions -
Deletion at the front end In this operation, the element is deleted from the front end of the queue. Before implementing the operation, we first have to check whether the queue is empty or not. If the queue is empty, i.e., front = -1, it is the underflow condition, and we cannot perform the deletion. If the queue is not full, then the element can be inserted from the front end by using the below conditions - If the deque has only one element, set rear = -1 and front = -1. Else if front is at end (that means front = size - 1), set front = 0. Else increment the front by 1, (i.e., front = front + 1). Deletion at the rear end In this operation, the element is deleted from the rear end of the queue. Before implementing the operation, we first have to check whether the queue is empty or not. If the queue is empty, i.e., front = -1, it is the underflow condition, and we cannot perform the deletion. If the deque has only one element, set rear = -1 and front = -1. If rear = 0 (rear is at front), then set rear = n - 1. Else, decrement the rear by 1 (or, rear = rear -1). Check empty This operation is performed to check whether the deque is empty or not. If front = -1, it means that the deque is empty. Check full This operation is performed to check whether the deque is full or not. If front = rear + 1, or front = 0 and rear = n - 1 it means that the deque is full. The time complexity of all of the above operations of the deque is O(1), i.e., constant. Applications of deque
Implementation of dequeNow, let's see the implementation of deque in C programming language. Output: So, that's all about the article. Hope, the article will be helpful and informative to you. Next TopicDS Priority Queue |