Bird
Raised Fist0
DSA Cprogramming~20 mins

Array Deletion at End in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Array Deletion Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output after deleting the last element from the array?
Consider the following C code that deletes the last element from an array by reducing its size. What will be printed?
DSA C
int arr[5] = {10, 20, 30, 40, 50};
int size = 5;

// Delete last element
if (size > 0) {
    size--;
}

for (int i = 0; i < size; i++) {
    printf("%d ", arr[i]);
}
printf("\n");
A10 20 30 40
B10 20 30 40 50
C20 30 40 50
D10 20 30 50
Attempts:
2 left
💡 Hint
Deleting the last element means reducing the size by one and printing only up to the new size.
❓ Predict Output
intermediate
2:00remaining
What happens if we delete from an empty array?
Given the code below, what will be the output?
DSA C
int arr[3] = {1, 2, 3};
int size = 0;

if (size > 0) {
    size--;
}

printf("Size: %d\n", size);
ARuntime error
BSize: 0
CSize: 1
DSize: -1
Attempts:
2 left
💡 Hint
Check the condition before decreasing size.
🔧 Debug
advanced
2:30remaining
Why does this code print an extra element after deletion?
The code below tries to delete the last element from the array but prints one extra element. Identify the bug.
DSA C
int arr[4] = {5, 10, 15, 20};
int size = 4;

size = size - 1;

for (int i = 0; i < size; i++) {
    printf("%d ", arr[i]);
}
printf("\n");
AThe array elements should be shifted left after deletion
BThe size should not be decremented before the loop
CThe loop condition should be i < size, not i <= size
DThe array size should be reset to zero
Attempts:
2 left
💡 Hint
Check the loop boundary condition carefully.
❓ Predict Output
advanced
2:30remaining
What is the output after multiple deletions at the end?
Given the code below, what will be printed?
DSA C
int arr[6] = {2, 4, 6, 8, 10, 12};
int size = 6;

// Delete last element twice
for (int i = 0; i < 2; i++) {
    if (size > 0) {
        size--;
    }
}

for (int i = 0; i < size; i++) {
    printf("%d ", arr[i]);
}
printf("\n");
A2 4 6 8 10 12
B2 4 6 8 10
C4 6 8 10
D2 4 6 8
Attempts:
2 left
💡 Hint
Each deletion reduces size by one, so two deletions reduce size from 6 to 4.
🧠 Conceptual
expert
2:00remaining
What is the time complexity of deleting the last element in a dynamic array?
Consider a dynamic array (like a vector in C++ or ArrayList in Java). What is the time complexity of deleting the last element?
AO(1) - Constant time
BO(n) - Linear time
CO(log n) - Logarithmic time
DO(n^2) - Quadratic time
Attempts:
2 left
💡 Hint
Deleting the last element usually just reduces the size counter.

Practice

(1/5)
1. What happens to the size of an array when you delete an element from the end in a typical static array implementation?
easy
A. The size decreases by one
B. The size stays the same
C. The size increases by one
D. The size becomes zero

Solution

  1. Step 1: Understand array size after deletion

    Deleting an element from the end means removing the last element, so the total number of elements reduces by one.
  2. Step 2: Effect on array size

    The size variable or count of elements decreases by one to reflect the removal.
  3. Final Answer:

    The size decreases by one -> Option A
  4. Quick Check:

    Deleting last element reduces size by 1 [OK]
Hint: Deleting end element reduces size by one [OK]
Common Mistakes:
  • Thinking size stays same after deletion
  • Assuming size increases after deletion
  • Confusing deletion with insertion
2. Which of the following is the correct way to delete the last element from an array arr of size n in C?
easy
A. free(arr[n-1]);
B. arr[n] = 0;
C. n = n - 1;
D. arr = arr - 1;

Solution

  1. Step 1: Understand array deletion in C

    In static arrays, deleting means reducing the size count. So, decreasing n by 1 removes last element logically.
  2. Step 2: Analyze options

    n = n - 1; correctly reduces size. arr[n] = 0; tries to set element but doesn't change size. free(arr[n-1]); is invalid as free is for dynamic memory. arr = arr - 1; is invalid pointer arithmetic.
  3. Final Answer:

    n = n - 1; -> Option C
  4. Quick Check:

    Decrease size variable to delete last element [OK]
Hint: Reduce size variable to delete last element [OK]
Common Mistakes:
  • Using free() on static array elements
  • Trying to set last element to zero without changing size
  • Incorrect pointer arithmetic
3. What will be the output of the following C code?
int arr[5] = {10, 20, 30, 40, 50};
int n = 5;
n = n - 1;
for(int i = 0; i < n; i++) {
    printf("%d ", arr[i]);
}
medium
A. 10 20 30 40 50
B. 10 20 30 40
C. 20 30 40 50
D. 10 20 30

Solution

  1. Step 1: Understand size after deletion

    Initially, n is 5. After n = n - 1;, n becomes 4, so loop runs from 0 to 3.
  2. Step 2: Loop prints elements from index 0 to 3

    Elements printed are arr[0]=10, arr[1]=20, arr[2]=30, arr[3]=40.
  3. Final Answer:

    10 20 30 40 -> Option B
  4. Quick Check:

    Loop runs n=4 times, prints first 4 elements [OK]
Hint: After reducing size, loop prints fewer elements [OK]
Common Mistakes:
  • Printing all 5 elements ignoring updated size
  • Starting loop from 1 instead of 0
  • Confusing array indices
4. Identify the error in the following code snippet that attempts to delete the last element of an array arr of size n.
void deleteEnd(int arr[], int n) {
    arr[n] = 0;
    n = n - 1;
}
medium
A. Accessing arr[n] is out of bounds
B. Size variable n should not be changed
C. Setting arr[n] to 0 deletes the element
D. Function should return the new size

Solution

  1. Step 1: Check array index usage

    Array indices go from 0 to n-1. Accessing arr[n] is out of bounds and causes undefined behavior.
  2. Step 2: Understand deletion logic

    To delete last element, reduce size n by 1. Setting arr[n] to 0 is invalid and does not delete element.
  3. Final Answer:

    Accessing arr[n] is out of bounds -> Option A
  4. Quick Check:

    Array index must be less than size [OK]
Hint: Array last index is n-1, not n [OK]
Common Mistakes:
  • Using arr[n] instead of arr[n-1]
  • Assuming setting element to zero deletes it
  • Not updating size correctly
5. Given a dynamic array implemented with a pointer int *arr and current size n, which of the following correctly deletes the last element and updates the array size safely in C?
hard
A. free(arr[n-1]); n = n - 1;
B. arr[n-1] = 0; n = n - 1;
C. arr = arr - 1; n = n - 1;
D. n = n - 1; arr = realloc(arr, n * sizeof(int));

Solution

  1. Step 1: Understand dynamic array deletion

    To delete last element, reduce size n by 1 and resize memory using realloc to avoid wasted space.
  2. Step 2: Analyze options

    n = n - 1; arr = realloc(arr, n * sizeof(int)); correctly reduces size and resizes memory. arr[n-1] = 0; n = n - 1; sets element to zero but wastes memory. free(arr[n-1]); n = n - 1; incorrectly uses free on element. arr = arr - 1; n = n - 1; does invalid pointer arithmetic.
  3. Final Answer:

    n = n - 1; arr = realloc(arr, n * sizeof(int)); -> Option D
  4. Quick Check:

    Reduce size and resize memory with realloc [OK]
Hint: Use realloc after reducing size for dynamic arrays [OK]
Common Mistakes:
  • Not resizing memory after deletion
  • Using free() on array elements
  • Incorrect pointer arithmetic
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