Удаление элемента из массива с использованием C

CBeginner
Практиковаться сейчас

Введение

Массив - это коллекция похожих элементов данных, хранящихся в последовательных ячейках памяти и состоящая из элементов. Элемент можно получить, обратившись к индексу соответствующей ячейки памяти. Иногда становится необходимым удалить любой элемент массива в зависимости от его позиции или значения. В этом практическом занятии мы узнаем, как удалить элемент из массива в зависимости от его позиции и значения.

Создайте проект на C

Во - первых, нам нужно создать проект на C в редакторе кода. Создайте новый файл "main.c" в директории ~/project/ и напишите следующий код:

#include <stdio.h>

int main()
{
  return 0;
}

Удалить элемент из массива по позиции

В этом шаге мы напишем программу на языке C, которая принимает массив целых чисел, размер массива и позицию элемента для удаления. Затем мы удалим элемент и выведем обновленный массив.

#include <stdio.h>

int main()
{
    int arr[100], position, c, n;

    printf("Enter the number of elements in array: ");
    scanf("%d", &n);

    printf("Enter %d elements:\n", n);
    for(c = 0; c < n; c++)
        scanf("%d", &arr[c]);

    printf("Enter the location of the element to delete: ");
    scanf("%d", &position);

    if (position >= n + 1)
        printf("Deletion not possible.\n");
    else
        for (c = position - 1; c < n - 1; c++)
            arr[c] = arr[c+1];

    printf("The updated array is: ");
    for(c = 0; c < n-1; c++)
        printf("%d ", arr[c]);

    return 0;
}

Пояснение к коду:

  • Мы создаем целочисленный массив arr[100], который может хранить максимум 100 элементов.
  • Мы получаем целое число n от пользователя, которое представляет количество элементов в массиве.
  • Цикл for используется для приема ввода от пользователя с использованием функции scanf в массив arr.
  • Мы получаем позицию элемента для удаления в качестве ввода от пользователя.
  • Мы проверяем, является ли введенная пользователем позиция допустимой; она должна быть между 1 и n.
  • Если позиция допустима, мы помещаем элемент слева от позиции на место удаленного элемента, что достигается путем реализации цикла для перемещения элемента на одну позицию влево.
  • Наконец, мы выводим обновленный массив с использованием инструкции printf.

Удалить элемент из массива по значению

В этом шаге мы напишем программу на C для удаления элемента массива в зависимости от значения, введенного пользователем.

#include<stdio.h>

int main()
{
    int arr[10], element, c, n, pos, found=0;

    printf("Enter the number of elements in array: ");
    scanf("%d", &n);

    printf("Enter %d elements:\n", n);
    for (c = 0; c < n; c++)
        scanf("%d", &arr[c]);

    printf("Enter the element to delete: ");
    scanf("%d", &element);

    for (c = 0; c < n; c++)
    {
        if (arr[c] == element)
        {
            found = 1;
            pos = c;
            break;
        }
    }

    if (found == 1)
    {
        for (c = pos; c < n - 1; c++)
            arr[c] = arr[c+1];

        printf("The updated array is: ");
        for (c = 0; c < n - 1; c++)
            printf("%d ", arr[c]);
    }

    else
        printf("Element not found in array.");

    return 0;
}

Пояснение к коду:

  • Мы создаем целочисленный массив arr[10].
  • Мы храним количество элементов, которое нужно добавить из переменной ввода пользователя n.
  • Мы используем цикл for для последовательного ввода n целых чисел с помощью функции scanf в целочисленный массив arr.
  • Мы получаем ввод элемента, который мы хотим удалить, от пользователя.
  • Мы обходим массив с помощью цикла for от 0 до n-1, а затем с использованием инструкции if проверяем, равно ли введенный пользователем элемент любому из элементов массива или нет.
  • Если оно равно, то мы объявляем переменную pos, в которой храним индекс этого элемента.
  • Мы используем другой цикл for для удаления элемента и сдвига остальных элементов массива.
  • Наконец, мы выводим обновленный массив с использованием инструкции printf.

Резюме

В этом практическом занятии мы научились удалять элемент из массива по его позиции или значению в программировании на C. Программа для удаления элемента из массива принимает массив, его размер и позицию/значение элемента для удаления в качестве входных данных. Для обхода массива используется цикл for, затем ищется позиция или значение целевого элемента, а затем с помощью цикла удаляется элемент. Это достигается путем копирования элемента, находящегося справа от элемента для удаления, влево до конца массива. После удаления размер массива уменьшается на единицу.