simple array queue
Typer | Posted on | |
// 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);
}
}