Добавить элемент в любую позицию массива, размещенного в динамической памяти - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Требуется добавить элемент в какое-нибудь место массива, размещенного в динамической памяти. (на языке Си, если можно с объяснением)

Решение задачи: «Добавить элемент в любую позицию массива, размещенного в динамической памяти»

textual
Листинг программы
//требуется добавить элемент в какое-нибудь место массива, размещенного в динамической памяти
#include <stdio.h>
#include <stdlib.h>
 
//создать массив
int *Create (int N)
{   int *a = (int*) malloc (N * sizeof(int));
    for(int i = 0; i<N; i++)
        a[i] = i;
    return a;
}
 
//показать массив
void Show (int *a, int N)
{   printf("\n");
    for(int i = 0; i<N; i++)
        printf("%5d", a[i]);
    printf("\n");
}
 
//разместить новый элемент на позиции pos
void Insert (int *a, int &N, int num, int pos)
{   if (pos<N)
    {   //расширяем область, на которую показывает указатель
        a = (int*) realloc (a, (N+1) * sizeof(int));
        //сдвигаем элементы до позиции pos вправо
        for (int i = N; i >= pos; i--)
            a[i] = a[i-1];
        //вставляем новый элемент
        a[pos] = num;
        N = N+1; //возвращаем новое N
    }
}
 
int main()
{   int N = 20, *arr;
    arr = Create (N);       //создаем массив
    Show (arr,N);           //смотрим
    Insert  (arr, N, 5, 3); //вставляем 5 на позицию 3
    Show (arr,N);           //смотрим (тут N уже на 1 больше)
 
    free (arr);
    getchar();
    return 0;
}

Объяснение кода листинга программы

  1. Создание массива: int Create (int N) { int a = (int) malloc (N sizeof(int)); for(int i = 0; i<N; i++) a[i] = i; return a; }
  2. Показ массива: void Show (int *a, int N) { printf(\n); for(int i = 0; i<N; i++) printf(%5d, a[i]); printf(\n); }
  3. Вставка элемента в массив: void Insert (int a, int &N, int num, int pos) { if (pos<N) { //расширяем область, на которую показывает указатель a = (int) realloc (a, (N+1) * sizeof(int)); //сдвигаем элементы до позиции pos вправо for (int i = N; i >= pos; i--) a[i] = a[i-1]; //вставляем новый элемент a[pos] = num; N = N+1; //возвращаем новое N } }
  4. Работа программы: int main() { int N = 20, *arr; arr = Create (N); //создаем массив Show (arr,N); //смотрим Insert  (arr, N, 5, 3); //вставляем 5 на позицию 3 Show (arr,N); //смотрим (тут N уже на 1 больше) free (arr); getchar(); return 0; }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.538 из 5
Похожие ответы