17.10.25

Deletion and Shifting in Arrays (Using Loops)


Hey everyone! 
In our previous blog, we learned how to delete elements from an array without using loops  by manually shifting each element one by one.
It worked fine, but it was like doing a workout with each variable manually. 

So today, let’s do Deletion and Shifting in Arrays using Loops.

What’s the Idea?

Whenever we delete an element from an array, we move all the elements after it one step to the left, using a for loop.

For example:
If we delete element at position 3,
then arr[3] = arr[4], arr[4] = arr[5], and so on.
The last element is then made 0 or NULL to show it’s empty.

Code: Deletion and Shifting (Using Loops)

/* Deletion and shifting of arrays in C (using loops) */
#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};

    /* Print initial array */
    printf("Initial array:\n");
    printf("| %d | %d | %d | %d | %d | %d | %d |\n\n",
           magic_numbers[0], magic_numbers[1], magic_numbers[2],
           magic_numbers[3], magic_numbers[4], magic_numbers[5],
           magic_numbers[6]);

    /* Delete 40 at position 3 */
    int delete_position = 3;
    printf("Deleting element at position %d (value %d) and shifting.\n", 
           delete_position, magic_numbers[delete_position]);
    for (int i = delete_position; i < 6; i++) {
        magic_numbers[i] = magic_numbers[i + 1];
    }
    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 at position 0 */
    delete_position = 0;
    printf("\nDeleting element at position %d (value %d) and shifting.\n", 
           delete_position, magic_numbers[delete_position]);
    for (int i = delete_position; i < 6; i++) {
        magic_numbers[i] = magic_numbers[i + 1];
    }
    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 at position 1 */
    delete_position = 1;
    printf("\nDeleting element at position %d (value %d) and shifting.\n", 
           delete_position, magic_numbers[delete_position]);
    for (int i = delete_position; i < 6; i++) {
        magic_numbers[i] = magic_numbers[i + 1];
    }
    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 at position 1 */
    delete_position = 1;
    printf("\nDeleting element at position %d (value %d) and shifting.\n", 
           delete_position, magic_numbers[delete_position]);
    for (int i = delete_position; i < 6; i++) {
        magic_numbers[i] = magic_numbers[i + 1];
    }
    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 :

Initial Array:

| 10 | 20 | 30 | 40 | 50 | 60 | 70 |

1.Delete 40 (Position 3)

| 10 | 20 | 30 | 50 | 60 | 70 | 0 |

2.Delete 10 (Position 0)

| 20 | 30 | 50 | 60 | 70 | 0 | 0 |

3.Delete 30 (Position 1)

| 20 | 50 | 60 | 70 | 0 | 0 | 0 |

4.Delete 50 (Position 1 again)

| 20 | 60 | 70 | 0 | 0 | 0 | 0 |

What are Loops?

In the previous version, we wrote multiple lines like:

magic_numbers[3] = magic_numbers[4];
magic_numbers[4] = magic_numbers[5];
magic_numbers[5] = magic_numbers[6];

That worked  but it’s not scalable.
If the array size increases, we’ll have to repeat those lines again and again 

Using loops, we replaced all that repetition with just:

for (int i = delete_position; i < 6; i++) {
    magic_numbers[i] = magic_numbers[i + 1];
}



No comments:

Post a Comment

rating System

Loading...

A Friendship Story of Learning Data Structures with C

Sr. No. DSU BLOGS CHAPTERS 1 Array Operations in C, The Group of Friendship (Create, Insert, Delete ...