Skip to content

Latest commit

 

History

History
118 lines (94 loc) · 3.5 KB

Queue.md

File metadata and controls

118 lines (94 loc) · 3.5 KB

A queue stores a collection of data values in a FIFO (First In, First Out) order. The first element added to the queue will be the first to be processed (removed).
A queue can only be accessed through its ends, referred as head for its rear and tail for its back.
The implementation could be an array-like (static and contiguous) or a linked-list-like (dynamic and dis-contiguous).

Queue

Add item to the rear of the queue

let queue = [4, 1, 0, 2]; queue.enqueue(5); // queue is now [4, 1, 0, 2, 5]

Remove the item from the front of the queue

let queue = [4, 1, 0, 2]; let head = queue.dequeue(); // head is 4 // queue is now [1, 0, 2]

Some programming languages provides peek method to allow checking the value of the current head without removing the value from the queue.

let queue = [4, 1, 0, 2]; let currentHead = queue.peek(); // currentHead is 4 // queue remains [4, 1, 0, 2]

The above shows the implementation of a simple Queue.

There are more types of Queues:

  • Circular Queue
  • Double Ended Queue

If the last position is full and the first position is empty, we can not insert an element in the first position in a Simple Queue. However this is possible if we use circular Queue, where the last element is connected to the first element forming a circle-like structure.

Dequeue and then enqueue

`` let size = 4 let queue = [4, 1, 0, 2]; let head = queue.dequeue(); // head is 4 // queue is now [ 1, 0, 2]

enqueue(8); /* queue is now [8, 1, 0, 2]. This operation could not be done in a simple queue since the last position of the queue is still occupied. According to simple Queue the queue is full. */

``

Double Ended Queue or Deque is a type of queue where insertion and deletions can be done from both ends (front and rear).it does not follow FIFO rule (First In First Out).

Insert from front

let queue = [4, 1, 0, 2]; queue.InsertFront(9); //The queue is now [9, 4, 1, 0, 2]

Insert from end

let queue = [4, 1, 0, 2]; queue.InsertEnd(9); //The queue is now [4, 1, 0, 2, 9]

Delete from front

let queue = [4, 1, 0, 2]; queue.DeleteFront(); //The queue is now [1, 0, 2]. 4 has been deleted

Delete from end

let queue = [4, 1, 0, 2]; queue.DeleteEnd(); //The queue is now [4, 1, 0]. 2 has been deleted

There are 2 types of Deque:

  • Input restricted:
    In this Input is restricted to one end only whereas deletion is possible from both ends.

  • Output restricted:
    In this Input is deletion from one end only whereas insertion(input) is possible to both ends.