Introduction to Queues

Hello there! Today, we will unveil Queues in coding, likening them to a line in a coffee shop or a queue of print requests. Queues in computer science are First-In, First-Out (FIFO) structures. Consider this example: you're at a theme park — the first person in line for the roller coaster gets on first. Today's lesson revolves around this straightforward yet powerful concept. So, let's dive in!

Implementing a Queue in Java

Let's explore the implementation of Queues in Java. An array is ideal for implementing a Queue. Let's define the Queue:

public class Queue {
    int front, rear, size, capacity;
    int array[];
    public Queue(int capacity) {
        this.capacity = capacity; // Set the max size
        front = size = 0; // Initialize front and size
        rear = capacity - 1; // Initialize rear
        array = new int[this.capacity]; 
    }

    // Will return true if the Queue is full
    boolean isFull(Queue queue) {
        return (queue.size == queue.capacity);
    }
}

In the Queue class above, the isFull() method checks if our queue is already at maximum capacity.

Queue Enqueue Operation

Enqueue, a fancy term, denotes adding an item to the queue — the item lines up at the rear. Here's how it plays out in our Queue class:

void enqueue(int item) {
    if (isFull(this)) return;  // Check if the queue is full
    this.rear = (this.rear + 1) % this.capacity; // Move rear
    this.array[this.rear] = item; // Add item at rear position
    this.size++; // Increment size
}

The enqueue() method checks if our queue has enough space before adding the item.

Queue Dequeue Operation

Just as enqueue adds an element to our queue, dequeue removes it. It extracts the element at the queue's front, reducing its size. However, we encounter an underflow condition if there are no elements to remove.

int dequeue() {
    if (isEmpty(this)) // Check if the queue is empty
        return Integer.MIN_VALUE;

    int item = this.array[this.front]; // Item at front
    this.front = (this.front + 1) % this.capacity; // Move front
    this.size = this.size - 1; // decrement size
    return item; // return removed item
}

The dequeue() method checks for emptiness before dispatching the item.

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal