What if removing one item could magically keep everything else perfectly in place without you lifting a finger?
Why Array Deletion at Middle Index in DSA C?
Imagine you have a row of books on a shelf, and you want to remove the book in the middle. You have to take out that book and then move all the books after it one step to the left to fill the empty space.
Doing this by hand is slow and tiring, especially if the shelf is very long. You might accidentally knock over books or forget to move some, causing gaps or disorder.
Using an array deletion method in programming automates this process. It shifts all elements after the removed one to the left, keeping everything neat and in order without mistakes.
for (int i = index; i < size - 1; i++) { array[i] = array[i + 1]; } size--;
deleteAtIndex(array, &size, index);
This lets programs efficiently remove items from the middle of a list, keeping data organized and ready for the next steps.
When you delete a contact from the middle of your phone's contact list, the phone automatically shifts the remaining contacts up to fill the gap.
Manual shifting of elements is slow and error-prone.
Array deletion automates shifting to keep data continuous.
Efficient deletion helps maintain organized data structures.
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 has 5 elements, so the middle index is 2 (0-based). 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 AQuick Check:
Middle element removed, array size reduced by 1 [OK]
- Not shifting elements after deletion
- Deleting wrong index
- Leaving array size unchanged
arr of size n?Solution
Step 1: Identify the middle index and loop direction
The middle index is n/2 (integer division). To delete, shift elements after middle left.Step 2: Check loop correctness
for (int i = n/2; i < n - 1; i++) arr[i] = arr[i + 1]; n--; shifts elements from middle to end left by one, then reduces size. This is correct.Final Answer:
for (int i = n/2; i < n - 1; i++) arr[i] = arr[i + 1]; n--; -> Option DQuick Check:
Shift elements after middle left [OK]
- Shifting elements before middle
- Looping in wrong direction
- Not reducing array size
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++) {
printf("%d ", arr[i]);
}Solution
Step 1: Calculate middle index and deletion
n=6, mid=3. Element at index 3 is 20. It will be deleted.Step 2: Shift elements after index 3 left by one
arr[3] = arr[4] (25), arr[4] = arr[5] (30), n becomes 5.Step 3: Print updated array
Elements: 5, 10, 15, 25, 30Final Answer:
5 10 15 25 30 -> Option CQuick Check:
Deleted middle element, shifted right elements left [OK]
- Printing original array size
- Not shifting elements correctly
- Deleting wrong index
arr of size n:int mid = n / 2;
for (int i = 0; i < mid; i++) {
arr[i] = arr[i + 1];
}
n--;Solution
Step 1: Analyze loop range and shifting direction
The loop runs from 0 to mid-1, shifting elements before middle left, which is incorrect.Step 2: Correct shifting after middle index
To delete middle element, shift elements from middle index to end left by one, not before middle.Final Answer:
Loop shifts elements before middle, should shift after middle -> Option BQuick Check:
Shift elements after middle, not before [OK]
- Shifting elements before middle
- Wrong loop boundaries
- Not reducing array size
arr of size n where n is even, write the steps to delete the middle two elements and shift the rest. What will be the new array after deleting middle elements from {1, 2, 3, 4, 5, 6}?Solution
Step 1: Identify middle two indices for even-sized array
For n=6, middle two indices are 2 and 3 (0-based), elements 3 and 4.Step 2: Delete these two elements and shift remaining elements left
Shift elements from index 4 and 5 left by two positions: 5 moves to index 2, 6 moves to index 3. Reduce size by 2.Step 3: New array after deletion
Array becomes [1, 2, 5, 6]Final Answer:
[1, 2, 5, 6] -> Option AQuick Check:
Delete two middle elements, shift right elements left by two [OK]
- Deleting only one middle element
- Shifting elements incorrectly
- Not reducing array size by two
Ready to prove it?
Pass the test and this pattern moves unknown
