simple array queue

// Simple Array queue implementation using a linear array
public class SimpleArrayQueue {

    final int[] arr;                 // Queue storage array
    int front;                       // Index of front item
    int rear;                        // Index of rear item
    final int capacity;             // Max size of the queue
    int size;                        // Current size

    // Constructor
    public SimpleArrayQueue(int capacity) {
        this.capacity = capacity;
        arr = new int[capacity];
        front = 0;
        rear = -1;
        size = 0;
    }

    // Insert an item into the queue
    public void enqueue(int item) {
        if (isFull()) {
            System.out.println("Queue is full. Cannot enqueue.");
            return;
        }
        rear++;
        arr[rear] = item;
        size++;
    }

    // Remove an item from the queue
    public int dequeue() {
        if (isEmpty()) {
            System.out.println("Queue is empty. Cannot dequeue.");
            return Integer.MIN_VALUE;
        }
        int item = arr[front];
        front++;
        size--;
        return item;
    }

    // Return front item without removing
    public int peek() {
        if (isEmpty()) {
            System.out.println("Queue is empty. No peek value.");
            return Integer.MIN_VALUE;
        }
        return arr[front];
    }

    public boolean isFull() {
        return size == capacity;
    }

    public boolean isEmpty() {
        return size == 0;
    }

    public int size() {
        return size;
    }

    // Print current state of the queue
    public void printState(String stepTitle, String enqueueItems, Integer dequeued) {
        System.out.println(stepTitle);
        if (enqueueItems != null) System.out.println("Enqueue: " + enqueueItems + ";");
        if (dequeued != null) System.out.println("Dequeued: " + dequeued + ";");
        System.out.println("Front index: " + front);
        System.out.println("Rear index: " + rear);
        System.out.println("Peek value: " + (isEmpty() ? "N/A" : peek()));
        System.out.println("Current size: " + size);
        System.out.print("Array content: ");
        for (int i = 0; i < capacity; i++) System.out.print(arr[i] + " ");
        System.out.print("\nVisible queue: ");
        for (int i = front; i <= rear; i++) System.out.print(arr[i] + " ");
        System.out.println("\n");
    }

    public static void main(String[] args) {
        SimpleArrayQueue queue = new SimpleArrayQueue(5);

        // Step 1: enqueue 10, 20, 30
        queue.enqueue(10);
        queue.enqueue(20);
        queue.enqueue(30);
        queue.printState("------------Step 1 : enqueue---------------", "10, 20, 30", null);

        // Step 2: dequeue 1 item
        int removed = queue.dequeue();
        queue.printState("------------Step 2 : dequeue---------------", null, removed);

        // Step 3: enqueue 40
        queue.enqueue(40);
        queue.printState("------------Step 3 : enqueue---------------", "40", null);
    }
}

 

Scroll to Top