Текущий массив
n = 0
Операции
Размер
0
Сумма
0
Минимум
—
Максимум
—
Ключевой код: вставка и удаление
Вставка в позицию k (сдвиг вправо)
// Сдвигаем все элементы, начиная с k, на одну позицию вправо
for (i = n; i > k; i--)
a[i] = a[i-1];
a[k] = value;
n++;
Удаление элемента с индексом k (сдвиг влево)
for (i = k; i < n - 1; i++)
a[i] = a[i+1];
n--; // логически уменьшаем размер; память, выделенная под массив, остаётся
Важно при удалении нескольких элементов. После удаления следующий элемент
сдвигается на место удалённого, и индекс
i увеличивать не нужно. Иначе можно
пропустить элемент. См. задачу «удалить все положительные элементы».
Задание
- Соберите массив из 5 элементов, удалите второй по счёту. Сколько присваиваний произошло?
- Вставьте элемент в середину массива. Сколько элементов сдвинулось?
- Реализуйте операцию «удалить все чётные элементы» в коде и сравните с визуализацией.
- Модифицируйте операцию «развернуть» так, чтобы она не использовала дополнительный массив.