Добавить элемент в любую позицию массива, размещенного в динамической памяти - 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; }
Объяснение кода листинга программы
- Создание массива: 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
); } - Вставка элемента в массив: 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д