Bird
Raised Fist0
DSA Cprogramming~20 mins

Enqueue Operation in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Enqueue Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Enqueue in Circular Queue
What is the output of the following C code after performing two enqueue operations on an initially empty circular queue of size 3?
DSA C
#include <stdio.h>
#define SIZE 3

int queue[SIZE];
int front = -1, rear = -1;

void enqueue(int value) {
    if ((rear + 1) % SIZE == front) {
        printf("Queue is full\n");
        return;
    }
    if (front == -1) front = 0;
    rear = (rear + 1) % SIZE;
    queue[rear] = value;
}

void printQueue() {
    if (front == -1) {
        printf("Queue is empty\n");
        return;
    }
    int i = front;
    while (1) {
        printf("%d ", queue[i]);
        if (i == rear) break;
        i = (i + 1) % SIZE;
    }
    printf("\n");
}

int main() {
    enqueue(10);
    enqueue(20);
    printQueue();
    return 0;
}
AQueue is empty
B20 10
CQueue is full
D10 20
Attempts:
2 left
💡 Hint
Remember how circular queue updates rear and front indices.
❓ Predict Output
intermediate
2:00remaining
State of Queue After Enqueue Operations
Given the following C code for a queue implemented with an array, what will be the printed queue after these enqueue operations?
DSA C
#include <stdio.h>
#define MAX 4

int queue[MAX];
int front = -1, rear = -1;

void enqueue(int val) {
    if (rear == MAX - 1) {
        printf("Queue is full\n");
        return;
    }
    if (front == -1) front = 0;
    rear++;
    queue[rear] = val;
}

void printQueue() {
    if (front == -1) {
        printf("Queue is empty\n");
        return;
    }
    for (int i = front; i <= rear; i++) {
        printf("%d ", queue[i]);
    }
    printf("\n");
}

int main() {
    enqueue(5);
    enqueue(15);
    enqueue(25);
    printQueue();
    return 0;
}
AQueue is full
B15 25
C5 15 25
DQueue is empty
Attempts:
2 left
💡 Hint
Check how rear and front indices change after each enqueue.
🔧 Debug
advanced
2:00remaining
Identify the Bug in Enqueue Function
What error will occur when running this enqueue function in C for a queue implemented with an array?
DSA C
#define SIZE 3
int queue[SIZE];
int front = -1, rear = -1;

void enqueue(int val) {
    if (rear == SIZE) {
        printf("Queue is full\n");
        return;
    }
    if (front == -1) front = 0;
    rear++;
    queue[rear] = val;
}
AArray index out of bounds error
BQueue is full message printed prematurely
CNo error, works fine
DCompilation error due to missing semicolon
Attempts:
2 left
💡 Hint
Check the condition that stops enqueue when queue is full.
❓ Predict Output
advanced
2:00remaining
Output After Multiple Enqueue and Dequeue in Circular Queue
What will be the output of the queue after these operations on a circular queue of size 4?
DSA C
#include <stdio.h>
#define SIZE 4

int queue[SIZE];
int front = -1, rear = -1;

void enqueue(int val) {
    if ((rear + 1) % SIZE == front) {
        printf("Queue is full\n");
        return;
    }
    if (front == -1) front = 0;
    rear = (rear + 1) % SIZE;
    queue[rear] = val;
}

void dequeue() {
    if (front == -1) {
        printf("Queue is empty\n");
        return;
    }
    if (front == rear) {
        front = rear = -1;
    } else {
        front = (front + 1) % SIZE;
    }
}

void printQueue() {
    if (front == -1) {
        printf("Queue is empty\n");
        return;
    }
    int i = front;
    while (1) {
        printf("%d ", queue[i]);
        if (i == rear) break;
        i = (i + 1) % SIZE;
    }
    printf("\n");
}

int main() {
    enqueue(1);
    enqueue(2);
    enqueue(3);
    dequeue();
    enqueue(4);
    printQueue();
    return 0;
}
A1 2 3 4
B2 3 4
CQueue is full
DQueue is empty
Attempts:
2 left
💡 Hint
Remember how front and rear move in circular queue after dequeue and enqueue.
🧠 Conceptual
expert
2:00remaining
Maximum Number of Enqueue Operations in Circular Queue
Consider a circular queue implemented with an array of size N. If the queue is initially empty, what is the maximum number of enqueue operations that can be performed before the queue is full?
AN - 1
BN
CN + 1
DN / 2
Attempts:
2 left
💡 Hint
Think about how circular queue uses one slot to distinguish full from empty.

Practice

(1/5)
1. What does the enqueue operation do in a queue data structure?
easy
A. Adds an element to the rear of the queue
B. Removes an element from the front of the queue
C. Checks if the queue is empty
D. Returns the size of the queue

Solution

  1. Step 1: Understand the queue operations

    In a queue, enqueue means adding an element, while dequeue means removing one.
  2. Step 2: Identify the position of addition

    Elements are always added at the rear (end) of the queue during enqueue.
  3. Final Answer:

    Adds an element to the rear of the queue -> Option A
  4. Quick Check:

    Enqueue = Add rear [OK]
Hint: Enqueue always adds at the back of the queue [OK]
Common Mistakes:
  • Confusing enqueue with dequeue operation
  • Thinking enqueue removes elements
  • Assuming enqueue adds at the front
2. Which of the following is the correct syntax to enqueue an element 10 in a queue implemented using an array named queue with rear index rear in C?
easy
A. queue[rear] = ++10;
B. queue[rear++] = 10;
C. queue[rear] = 10++;
D. queue[++rear] = 10;

Solution

  1. Step 1: Understand post-increment vs pre-increment

    Post-increment (rear++) uses rear as index then increments it. Pre-increment (++rear) increments rear first then uses it as index.
  2. Step 2: Choose correct index update for enqueue

    To add at current rear position and then move rear forward, use post-increment: queue[rear++] = 10;.
  3. Final Answer:

    queue[rear++] = 10; -> Option B
  4. Quick Check:

    Post-increment rear after assignment [OK]
Hint: Use rear++ to assign then move rear forward [OK]
Common Mistakes:
  • Using pre-increment causing skip of first index
  • Trying to increment the value instead of index
  • Syntax errors with invalid increments
3. What will be the state of the queue array after executing the following code?
int queue[5];
int rear = -1;
queue[++rear] = 5;
queue[++rear] = 10;
queue[++rear] = 15;
medium
A. [5, 10, 0, 15, 0]
B. [0, 5, 10, 15, 0]
C. [5, 10, 15, 0, 0]
D. [15, 10, 5, 0, 0]

Solution

  1. Step 1: Trace each enqueue operation

    Initially, rear = -1.
    First enqueue: ++rear = 0, queue[0] = 5.
    Second enqueue: ++rear = 1, queue[1] = 10.
    Third enqueue: ++rear = 2, queue[2] = 15.
  2. Step 2: Determine final queue array state

    Positions 0,1,2 have 5,10,15 respectively. Others remain 0 (default uninitialized).
  3. Final Answer:

    [5, 10, 15, 0, 0] -> Option C
  4. Quick Check:

    Enqueue adds sequentially at indices 0,1,2 [OK]
Hint: Pre-increment rear before assignment fills array from index 0 [OK]
Common Mistakes:
  • Confusing post-increment with pre-increment
  • Assuming queue starts at index 1
  • Ignoring initial rear value -1
4. Identify the error in the following enqueue function for a queue implemented using an array and fix it:
void enqueue(int queue[], int *rear, int value) {
    queue[*rear] = value;
    (*rear)++;
}
medium
A. The value should be assigned after incrementing rear twice
B. The rear should not be incremented at all
C. The function should decrement rear instead
D. The rear should be incremented before assignment

Solution

  1. Step 1: Analyze the enqueue logic

    The function assigns value at current rear index, then increments rear.
    This causes the first element to be placed at rear=0 if rear was 0, which is correct only if rear points to next free slot.
  2. Step 2: Correct the order for standard enqueue

    Usually, rear points to last filled index, so increment rear first, then assign:
    queue[++(*rear)] = value;.
  3. Final Answer:

    The rear should be incremented before assignment -> Option D
  4. Quick Check:

    Increment rear first, then assign value [OK]
Hint: Increment rear before assignment to avoid overwrite [OK]
Common Mistakes:
  • Assigning value before incrementing rear
  • Incrementing rear twice accidentally
  • Decrementing rear instead of incrementing
5. Given a circular queue of size 5 with front = 3 and rear = 1, which of the following enqueue operations is valid and will not cause overflow?
hard
A. Enqueue at rear = 2
B. Enqueue at rear = 3
C. Enqueue at rear = 4
D. Enqueue at rear = 0

Solution

  1. Step 1: Understand circular queue indexing

    Queue size = 5, indices 0 to 4.
    front = 3, rear = 1 means elements occupy positions from front to rear wrapping around.
  2. Step 2: Check next rear position for enqueue

    Next rear = (rear + 1) % size = (1 + 1) % 5 = 2.
    If next rear equals front, queue is full (overflow). Here, next rear 2 != front 3, so enqueue at 2 is valid.
    But options show enqueue at rear = 2, 3, 4, 0. We must check which is correct next rear.
  3. Step 3: Validate each option

    Enqueue at rear = 2: rear=2 is next rear, valid.
    Enqueue at rear = 3: rear=3 equals front, overflow.
    Enqueue at rear = 4: rear=4 is not next rear, invalid.
    Enqueue at rear = 0: rear=0 is not next rear, invalid.
  4. Final Answer:

    Enqueue at rear = 2 -> Option A
  5. Quick Check:

    Next rear = (rear+1)%size = 2, enqueue valid [OK]
Hint: Next rear = (rear + 1) mod size; must not equal front [OK]
Common Mistakes:
  • Ignoring circular wrap-around logic
  • Enqueueing at front index causing overflow
  • Assuming rear can be any index
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard