What if removing one item could magically rearrange your whole list perfectly every time?
Why Array Deletion at Middle Index in DSA C++?
Imagine you have a list of your favorite songs written on paper. You want to remove the song in the middle, but to keep the list neat, you have to rewrite all the songs after it one position up.
Doing this by hand is slow and tiring. You might skip a song or write the wrong order. It takes time to shift everything up, and mistakes can happen easily.
Using an array deletion method in programming, the computer automatically shifts all elements after the removed one to fill the gap. This saves time and avoids errors, keeping the list organized instantly.
for (int i = index; i < size - 1; i++) { arr[i] = arr[i + 1]; } size--;
deleteAtIndex(arr, size, index); // shifts elements and updates sizeThis lets you quickly and safely remove any item from the middle of a list without messing up the order.
When you delete a contact from the middle of your phone's contact list, the phone automatically moves the following contacts up to fill the empty spot.
Manual shifting is slow and error-prone.
Array deletion automates shifting elements after removal.
Keeps data organized and consistent after deletion.
Practice
int arr[5] = {10, 20, 30, 40, 50};Delete the element at index 2 (middle). What is the new array?
Solution
Step 1: Identify the middle index and element
The array size is 5, so middle index is 2. The element at index 2 is 30.Step 2: Delete the middle element and shift remaining elements
Remove 30, then shift elements after index 2 left by one: 40 moves to index 2, 50 moves to index 3.Final Answer:
[10, 20, 40, 50] -> Option DQuick Check:
Deleted middle element 30, shifted left [OK]
- Not shifting elements after deletion
- Deleting wrong index
- Leaving array size unchanged
arr of size n?Solution
Step 1: Understand deletion logic
To delete middle element at index n/2, shift all elements after it one position left.Step 2: Check each code snippet
for(int i = n/2; i < n-1; i++) arr[i] = arr[i+1]; n--; correctly shifts elements from middle to end left by one and reduces size. Others either shift wrong elements or just set zero without shifting.Final Answer:
for(int i = n/2; i < n-1; i++) arr[i] = arr[i+1]; n--; -> Option AQuick Check:
Shift elements after middle left [OK]
- Shifting elements before middle index
- Not reducing array size
- Assigning zero instead of shifting
int arr[6] = {5, 10, 15, 20, 25, 30};
int n = 6;
int mid = n / 2;
for(int i = mid; i < n - 1; i++) {
arr[i] = arr[i + 1];
}
n--;
for(int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}Solution
Step 1: Calculate middle index and delete element
n=6, mid=3. Element at index 3 is 20. We delete 20 by shifting elements after index 3 left.Step 2: Shift elements and print array
Shift arr[3]=arr[4]=25, arr[4]=arr[5]=30. New array: 5,10,15,25,30. Size reduced to 5.Final Answer:
5 10 15 25 30 -> Option AQuick Check:
Deleted 20, shifted left [OK]
- Not reducing array size
- Printing old array size
- Not shifting elements correctly
arr of size n:int mid = n / 2;
for(int i = mid; i <= n - 1; i++) {
arr[i] = arr[i + 1];
}
n--;Solution
Step 1: Analyze loop range for shifting elements
The loop runs from mid to n-1 inclusive, so arr[i+1] accesses arr[n], which is out of bounds.Step 2: Correct loop condition
Loop should run while i < n-1 to avoid accessing beyond array size.Final Answer:
Loop condition should be i < n - 1, not i <= n - 1 -> Option CQuick Check:
Prevent out-of-bounds by correct loop limit [OK]
- Using <= instead of < in loop condition
- Not decrementing array size
- Wrong middle index calculation
arr of size n, write the logic to delete the middle element and return the new array size. What will be the size after deletion if n is even?Choose the correct approach.
Solution
Step 1: Understand middle index for even-sized array
In standard array operations, middle index is n/2 (integer division), consistent with odd sizes.Step 2: Delete element at n/2 and shift elements left
Remove element at index n/2, shift all elements after it left by one, reduce size by 1.Final Answer:
Delete element at index n/2, shift elements left, new size = n - 1 -> Option BQuick Check:
Middle index = n/2 for even n [OK]
- Deleting lower middle index (n/2 - 1) for even n
- Not shifting elements after deletion
- Not reducing array size
Ready to prove it?
Pass the test and this pattern moves unknown
