Bird
Raised Fist0
DSA Cprogramming~10 mins

Queue Implementation Using Array in DSA C - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to initialize the front index of the queue.

DSA C
int front = [1];
Drag options to blanks, or click blank then click option'
A0
BNULL
C1
D-1
Attempts:
3 left
💡 Hint
Common Mistakes
Initializing front to 0 causes confusion between empty and first element.
Using NULL is invalid for integer variables.
2fill in blank
medium

Complete the code to check if the queue is full.

DSA C
if (rear == [1] - 1) {
    printf("Queue is full\n");
}
Drag options to blanks, or click blank then click option'
Afront
BMAX_SIZE
Crear
Dsize
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing rear to front instead of MAX_SIZE.
Using size variable which may not be defined.
3fill in blank
hard

Fix the error in the enqueue function to correctly add an element.

DSA C
void enqueue(int queue[], int *rear, int value) {
    if (*rear == MAX_SIZE - 1) {
        printf("Queue is full\n");
    } else {
        *rear = *rear [1] 1;
        queue[*rear] = value;
    }
}
Drag options to blanks, or click blank then click option'
A*
B-
C+
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using - instead of + causes rear to move backward.
Using * or / causes incorrect pointer arithmetic.
4fill in blank
hard

Fill the blank to correctly dequeue an element and update front.

DSA C
int dequeue(int queue[], int *front, int rear) {
    if (*front == rear) {
        printf("Queue is empty\n");
        return -1;
    } else {
        *front = *front [1] 1;
        return queue[*front];
    }
}
Drag options to blanks, or click blank then click option'
A+
B-
C*
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using - causes front to move backward.
Using * or / causes wrong index calculation.
5fill in blank
hard

Fill all three blanks to implement a function that prints all elements in the queue.

DSA C
void printQueue(int queue[], int front, int rear) {
    if (front == rear) {
        printf("Queue is empty\n");
    } else {
        for (int i = front [1] 1; i [2] rear; i [3] 1) {
            printf("%d -> ", queue[i]);
        }
        printf("NULL\n");
    }
}
Drag options to blanks, or click blank then click option'
A+
B<=
C<
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using <= may cause printing beyond the rear element.
Using - or other operators breaks the loop logic.

Practice

(1/5)
1. What is the main characteristic of a queue implemented using an array?
easy
A. It follows First-In-First-Out (FIFO) order
B. It follows Last-In-First-Out (LIFO) order
C. It allows random access to elements
D. It stores elements in sorted order

Solution

  1. Step 1: Understand queue behavior

    A queue is a data structure where the first element added is the first one to be removed, which is FIFO.
  2. Step 2: Compare with options

    It follows First-In-First-Out (FIFO) order correctly states FIFO order. It follows Last-In-First-Out (LIFO) order is LIFO (stack), C allows random access (array), D stores sorted (not queue).
  3. Final Answer:

    It follows First-In-First-Out (FIFO) order -> Option A
  4. Quick Check:

    Queue = FIFO [OK]
Hint: Queue always removes the oldest element first [OK]
Common Mistakes:
  • Confusing queue with stack (LIFO)
  • Thinking queue allows random access
  • Assuming queue sorts elements automatically
2. Which of the following is the correct way to declare a queue array of size 5 in C?
easy
A. queue int[5];
B. int queue[5];
C. int queue();
D. int queue = new int[5];

Solution

  1. Step 1: Recall C array declaration syntax

    In C, arrays are declared as type name[size], e.g., int queue[5];
  2. Step 2: Check each option

    int queue[5]; matches correct syntax. queue int[5]; is invalid syntax. int queue(); declares a function, not an array. int queue = new int[5]; is Java-style syntax.
  3. Final Answer:

    int queue[5]; -> Option B
  4. Quick Check:

    C array declaration = int name[size] [OK]
Hint: C arrays use type name[size] syntax [OK]
Common Mistakes:
  • Using Java or other language syntax
  • Confusing function declaration with array
  • Missing semicolon or brackets
3. Consider this C code snippet for a queue implemented using an array of size 3:
int queue[3];
int front = -1, rear = -1;

// Enqueue 10
rear++;
queue[rear] = 10;
if(front == -1) front = 0;

// Enqueue 20
rear++;
queue[rear] = 20;

// Dequeue
int val = queue[front];
front++;

// Enqueue 30
rear++;
queue[rear] = 30;

// Current queue elements from front to rear?
medium
A. 30 -> null
B. 10 -> 20 -> 30 -> null
C. 20 -> 30 -> null
D. 10 -> 30 -> null

Solution

  1. Step 1: Trace enqueue and dequeue operations

    Initially front = -1, rear = -1. Enqueue 10: rear=0, queue[0]=10, front=0. Enqueue 20: rear=1, queue[1]=20. Dequeue: val=queue[front]=queue[0]=10, front=1. Enqueue 30: rear=2, queue[2]=30.
  2. Step 2: Identify current queue elements

    front=1, rear=2, so elements are queue[1]=20 and queue[2]=30. Hence queue is 20 -> 30 -> null.
  3. Final Answer:

    20 -> 30 -> null -> Option C
  4. Quick Check:

    After dequeue, front moves forward; queue = 20, 30 [OK]
Hint: After dequeue, front moves forward; queue shows elements from front to rear [OK]
Common Mistakes:
  • Not updating front after dequeue
  • Including dequeued elements in output
  • Confusing front and rear indices
4. Identify the error in this queue enqueue function using array in C:
void enqueue(int queue[], int *rear, int size, int value) {
    if (*rear == size) {
        printf("Queue is full\n");
        return;
    }
    (*rear)++;
    queue[*rear] = value;
}
medium
A. rear should be compared with size - 1, not size
B. rear should be incremented after inserting value
C. Function should return int instead of void
D. queue array should be dynamically allocated

Solution

  1. Step 1: Analyze the full condition

    The check if(*rear == size) is wrong. Array indices are 0 to size-1, so full when *rear == size-1 before incrementing. Current check allows overflow.
  2. Step 2: Compare options

    rear should be compared with size - 1, not size identifies the correct fix: compare with size-1, not size. Others are incorrect.
  3. Final Answer:

    rear should be compared with size - 1, not size -> Option A
  4. Quick Check:

    Full: *rear == size-1 [OK]
Hint: Full check: rear == size - 1 [OK]
Common Mistakes:
  • Comparing rear == size instead of size-1
  • Incorrect overflow condition
  • Ignoring zero-based indexing
5. You have a queue implemented using an array of size 4 with front = 1 and rear = 3. After dequeuing two elements and enqueuing one element, what will be the correct front and rear values if you implement a circular queue?
hard
A. front = 2, rear = 0
B. front = 3, rear = 1
C. front = 0, rear = 1
D. front = 3, rear = 0

Solution

  1. Step 1: Understand initial state and operations

    Initial: front=1, rear=3, size=4. Dequeue twice: front moves forward twice. Since circular, front = (1 + 2) % 4 = 3.
  2. Step 2: Enqueue one element

    rear moves forward by one circularly: rear = (3 + 1) % 4 = 0.
  3. Final Answer:

    front = 3, rear = 0 -> Option D
  4. Quick Check:

    Circular queue uses modulo for front and rear [OK]
Hint: Use modulo to wrap front and rear in circular queue [OK]
Common Mistakes:
  • Not using modulo for circular increment
  • Updating front or rear incorrectly
  • Confusing front and rear positions
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