Bird
0
0
DSA Cprogramming~20 mins

Circular Queue Implementation Using Array in DSA C - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Circular Queue Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Circular Queue Enqueue and Dequeue Operations
What is the printed state of the circular queue after the following operations?

Initialize queue with size 5.
Enqueue 10, 20, 30.
Dequeue one element.
Enqueue 40, 50, 60.
Print queue contents from front to rear.
DSA C
int size = 5;
int queue[5];
int front = -1, rear = -1;

// Enqueue function
void enqueue(int val) {
    if ((rear + 1) % size == front) return; // full
    if (front == -1) front = 0;
    rear = (rear + 1) % size;
    queue[rear] = val;
}

// Dequeue function
int dequeue() {
    if (front == -1) return -1; // empty
    int val = queue[front];
    if (front == rear) {
        front = rear = -1;
    } else {
        front = (front + 1) % size;
    }
    return val;
}

// Operations
enqueue(10);
enqueue(20);
enqueue(30);
dequeue();
enqueue(40);
enqueue(50);
enqueue(60);

// Print queue
int i = front;
while (true) {
    printf("%d ", queue[i]);
    if (i == rear) break;
    i = (i + 1) % size;
}
A30 40 50 60
B20 30 40 50 60
C10 20 30 40 50
D20 30 40 50
Attempts:
2 left
💡 Hint
Remember that dequeue removes the front element and enqueue adds at rear using modulo for wrap-around.
🧠 Conceptual
intermediate
1:30remaining
Capacity Check in Circular Queue
In a circular queue implemented with an array of size N, which condition correctly checks if the queue is full?
A(rear + 1) % N == front
Brear == N - 1
Cfront == rear
Dfront == -1
Attempts:
2 left
💡 Hint
Think about how rear and front wrap around in a circular queue.
🔧 Debug
advanced
1:30remaining
Identify the Bug in Circular Queue Dequeue
What error will occur when running this dequeue code snippet if the queue is empty?
DSA C
int dequeue() {
    if (front == -1) {
        printf("Queue is empty\n");
        return -1;
    }
    int val = queue[front];
    if (front == rear) {
        front = rear = -1;
    } else {
        front = (front + 1) % size;
    }
    return val;
}
ARuns correctly and returns front element
BPrints 'Queue is empty' and returns -1
CCompilation error due to missing return statement
DReturns garbage value because no return after empty check
Attempts:
2 left
💡 Hint
Check what happens after printing 'Queue is empty' when queue is empty.
📝 Syntax
advanced
1:30remaining
Correct Circular Queue Enqueue Syntax
Which option correctly updates rear and inserts value val in a circular queue of size N?
A
rear = (rear + 1) % N;
queue[rear] = val;
B
rear = rear + 1 % N;
queue[rear] = val;
C
rear = (rear + 1) / N;
queue[rear] = val;
D
rear = rear + 1 % N;
queue[val] = rear;
Attempts:
2 left
💡 Hint
Remember operator precedence and modulo usage for circular increment.
🚀 Application
expert
2:30remaining
Final Queue State After Mixed Operations
Given a circular queue of size 4, starting empty, perform these operations:
enqueue(1), enqueue(2), enqueue(3), dequeue(), enqueue(4), dequeue(), enqueue(5), enqueue(6).
What is the queue content from front to rear?
A4 5 6
B2 3 4 5
C3 4 5 6
D1 2 3 4
Attempts:
2 left
💡 Hint
Track front and rear carefully after each operation with wrap-around.