Bird
Raised Fist0
DSA C++programming

Array Deletion at End in DSA C++

Choose your learning style10 modes available
Mental Model
Removing the last item from a list means just ignoring it from now on.
Analogy: Like taking the last book off a stack on a table; you don't move the others, just remove the top one.
Index: 0   1   2   3   4
Array: 10 -> 20 -> 30 -> 40 -> 50
Size: 5
Dry Run Walkthrough
Input: array: [10, 20, 30, 40, 50], delete last element
Goal: Remove the last element and reduce the size by one
Step 1: Check if array is empty
10 -> 20 -> 30 -> 40 -> 50, size=5
Why: We must not delete from an empty array
Step 2: Reduce size by 1 to remove last element
10 -> 20 -> 30 -> 40, size=4
Why: Reducing size means ignoring the last element
Step 3: Print updated array
10 -> 20 -> 30 -> 40 -> null
Why: Show the array after deletion
Result:
10 -> 20 -> 30 -> 40 -> null
Annotated Code
DSA C++
#include <iostream>
using namespace std;

class Array {
public:
    int arr[100];
    int size;

    Array() {
        size = 5;
        arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; arr[4] = 50;
    }

    void deleteAtEnd() {
        if (size == 0) {
            cout << "Array is empty, cannot delete." << endl;
            return;
        }
        size--; // reduce size to remove last element
    }

    void print() {
        for (int i = 0; i < size; i++) {
            cout << arr[i];
            if (i != size - 1) cout << " -> ";
        }
        cout << " -> null" << endl;
    }
};

int main() {
    Array a;
    a.print();
    a.deleteAtEnd();
    a.print();
    return 0;
}
if (size == 0) { cout << "Array is empty, cannot delete." << endl; return; }
Check if array is empty to avoid invalid deletion
size--; // reduce size to remove last element
Decrease size to ignore last element effectively deleting it
for (int i = 0; i < size; i++) { cout << arr[i]; if (i != size - 1) cout << " -> "; }
Print elements up to current size to show updated array
OutputSuccess
10 -> 20 -> 30 -> 40 -> 50 -> null 10 -> 20 -> 30 -> 40 -> null
Complexity Analysis
Time: O(1) because deletion at end just reduces size without shifting elements
Space: O(1) because no extra space is needed for deletion
vs Alternative: Compared to deleting at start or middle which requires shifting elements O(n), deleting at end is faster and simpler
Edge Cases
empty array
Prints message and does not delete
DSA C++
if (size == 0) { cout << "Array is empty, cannot delete." << endl; return; }
array with one element
Size reduces to zero, array becomes empty
DSA C++
size--;
When to Use This Pattern
When you need to remove the last item quickly from a list, use array deletion at end because it avoids shifting elements.
Common Mistakes
Mistake: Trying to shift elements after deleting last element
Fix: Just reduce size by one; no shifting needed
Mistake: Not checking if array is empty before deletion
Fix: Add a check to avoid deleting from empty array
Summary
Deletes the last element by reducing the array size by one.
Use when you want to remove the last item quickly without rearranging the array.
The key insight is that reducing size ignores the last element without moving others.

Practice

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

Solution

  1. Step 1: Understand dynamic array size behavior

    When an element is deleted from the end, the array size reduces by one because one element is removed.
  2. Step 2: Confirm size change after deletion

    Deleting from the end does not affect other elements, only reduces size by one.
  3. Final Answer:

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

    Size after deletion = original size - 1 [OK]
Hint: Deleting at end reduces size by one [OK]
Common Mistakes:
  • Thinking size remains same after deletion
  • Assuming size increases after deletion
  • Confusing deletion at end with deletion at start
2. Which of the following is the correct syntax to delete the last element from a vector named vec in C++?
easy
A. vec.erase_end();
B. vec.delete_last();
C. vec.remove_end();
D. vec.pop_back();

Solution

  1. Step 1: Recall vector deletion syntax

    The standard method to remove the last element from a vector in C++ is pop_back().
  2. Step 2: Verify other options

    Other methods like delete_last(), remove_end(), and erase_end() do not exist in C++ STL vector.
  3. Final Answer:

    vec.pop_back(); -> Option D
  4. Quick Check:

    Use pop_back() to delete last element [OK]
Hint: Use pop_back() to remove last element in vector [OK]
Common Mistakes:
  • Using non-existent methods like delete_last()
  • Confusing erase() with erase_end()
  • Trying to use remove_end() which is invalid
3. What will be the output of the following C++ code?
std::vector<int> v = {10, 20, 30, 40};
v.pop_back();
for(int x : v) std::cout << x << " ";
medium
A. 10 20 30 40
B. 20 30 40
C. 10 20 30
D. 10 20 40

Solution

  1. Step 1: Understand pop_back effect on vector

    pop_back() removes the last element, which is 40 in this vector.
  2. Step 2: Print remaining elements

    After removal, vector contains 10, 20, 30. Loop prints these with spaces.
  3. Final Answer:

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

    Last element removed, output = 10 20 30 [OK]
Hint: pop_back() removes last element before printing [OK]
Common Mistakes:
  • Printing original vector without deletion
  • Confusing which element is removed
  • Forgetting pop_back() modifies vector
4. Identify the error in the following code that attempts to delete the last element of an array:
int arr[3] = {1, 2, 3};
arr.pop_back();
medium
A. pop_back() deletes first element, not last
B. pop_back() is not a member of built-in arrays
C. Array size is zero, cannot delete
D. No error, code is correct

Solution

  1. Step 1: Check array type and methods

    Built-in arrays in C++ do not have member functions like pop_back().
  2. Step 2: Understand correct usage

    pop_back() is a method of std::vector, not raw arrays.
  3. Final Answer:

    pop_back() is not a member of built-in arrays -> Option B
  4. Quick Check:

    pop_back() only works with vectors, not arrays [OK]
Hint: pop_back() works only on vectors, not raw arrays [OK]
Common Mistakes:
  • Assuming pop_back() works on raw arrays
  • Ignoring that arrays have fixed size
  • Thinking pop_back() deletes first element
5. You have a vector v with elements {5, 10, 15, 20, 25}. You want to delete the last two elements and then print the vector. Which code snippet correctly does this?
hard
A. v.erase(v.end()-2, v.end()); for(auto x : v) std::cout << x << ' ';
B. v.pop_back(); for(auto x : v) std::cout << x << ' ';
C. v.remove_end(); v.remove_end(); for(auto x : v) std::cout << x << ' ';
D. v.pop_back(2); for(auto x : v) std::cout << x << ' ';

Solution

  1. Step 1: Understand methods to delete multiple elements

    pop_back() removes only one element at a time. To remove two, it must be called twice. erase() can remove a range efficiently.
  2. Step 2: Analyze the snippets

    The snippet v.erase(v.end()-2, v.end()); for(auto x : v) std::cout << x << ' '; correctly removes the last two elements. The snippet with a single v.pop_back(); removes only one element. remove_end() does not exist. pop_back(2) uses invalid syntax.
  3. Final Answer:

    v.erase(v.end()-2, v.end()); for(auto x : v) std::cout << x << ' '; -> Option A
  4. Quick Check:

    erase() with range removes last two elements efficiently [OK]
Hint: Use erase(end()-2, end()) to delete last two elements [OK]
Common Mistakes:
  • Using pop_back() only once instead of twice
  • Using non-existent remove_end() method
  • Not knowing erase() can remove ranges
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