Deletion and Shifting in Arrays
Hey everyone!
Here’s a simple C program that demonstrates how to delete elements from an array and shift the remaining elements to fill the empty spot.
We’ll be deleting elements one by one specifically 40, then 10, then 30, and finally 50 while watching how the array updates each time.
Code:
/*Deletion and shifting of arrays*/
#include <stdio.h>
int main() {
printf("Initial array:\n");
printf("| 10 | 20 | 30 | 40 | 50 | 60 | 70 |\n\n");
int magic_numbers[7] = {10, 20, 30, 40, 50, 60, 70};
printf("| %d | %d | %d | %d | %d | %d | %d |\n", magic_numbers[0],
magic_numbers[1], magic_numbers[2], magic_numbers[3], magic_numbers[4],
magic_numbers[5], magic_numbers[6]);
int delete_position = 3; /*40*/
printf("\nDeleting element at position %d and shifting.\n", delete_position);
magic_numbers[3] = magic_numbers[4];
magic_numbers[4] = magic_numbers[5];
magic_numbers[5] = magic_numbers[6];
magic_numbers[6] = 0;
printf("| %d | %d | %d | %d | %d | %d | %d |\n", magic_numbers[0],
magic_numbers[1], magic_numbers[2], magic_numbers[3], magic_numbers[4],
magic_numbers[5], magic_numbers[6]);
/* Delete 10 */
printf("\nDeleting element at position %d and shifting.\n", delete_position);
magic_numbers[0] = magic_numbers[1];
magic_numbers[1] = magic_numbers[2];
magic_numbers[2] = magic_numbers[3];
magic_numbers[3] = magic_numbers[4];
magic_numbers[4] = magic_numbers[5];
magic_numbers[5] = magic_numbers[6];
magic_numbers[6] = 0;
printf("| %d | %d | %d | %d | %d | %d | %d |\n", magic_numbers[0],
magic_numbers[1], magic_numbers[2], magic_numbers[3], magic_numbers[4],
magic_numbers[5], magic_numbers[6]);
/* Delete 30 */
printf("\nDeleting element at position %d and shifting.\n", delete_position);
magic_numbers[1] = magic_numbers[2];
magic_numbers[2] = magic_numbers[3];
magic_numbers[3] = magic_numbers[4];
magic_numbers[4] = magic_numbers[5];
magic_numbers[5] = magic_numbers[6];
magic_numbers[6] = 0;
printf("| %d | %d | %d | %d | %d | %d | %d |\n", magic_numbers[0],
magic_numbers[1], magic_numbers[2], magic_numbers[3], magic_numbers[4],
magic_numbers[5], magic_numbers[6]);
/* Delete 50 */
printf("\nDeleting element at position %d and shifting.\n", delete_position);
magic_numbers[1] = magic_numbers[2];
magic_numbers[2] = magic_numbers[3];
magic_numbers[3] = magic_numbers[4];
magic_numbers[4] = magic_numbers[5];
magic_numbers[5] = magic_numbers[6];
magic_numbers[6] = 0;
printf("| %d | %d | %d | %d | %d | %d | %d |\n", magic_numbers[0],
magic_numbers[1], magic_numbers[2], magic_numbers[3], magic_numbers[4],
magic_numbers[5], magic_numbers[6]);
return 0;
}
Output Explanation
Initial Array:
| 10 | 20 | 30 | 40 | 50 | 60 | 70 |
1.Delete 40 (Position 3)
After removing 40, the array shifts left:
| 10 | 20 | 30 | 50 | 60 | 70 | 0 |
2.Delete 10 (Position 0)
Remove the first element and shift everything left again:
| 20 | 30 | 50 | 60 | 70 | 0 | 0 |
3.Delete 30 (Position 1)
After deleting 30:
| 20 | 50 | 60 | 70 | 0 | 0 | 0 |
4.Delete 50 (Position 1 again)
After deleting 50:
| 20 | 60 | 70 | 0 | 0 | 0 | 0 |
What did we do?
When we delete an element from an array:
-
We shift every element after it one position to the left.
-
The last element becomes empty (0) or NULL.
No comments:
Post a Comment