P
pro·school.ru
Каталог школ

Вставка и удаление элемента массива

💻 Информатика · 8 класс

Изменение содержимого массива

Массив хранит элементы в ячейках, расположенных подряд, и у каждого элемента есть свой номер — индекс. Чтобы вставить новый элемент в середину массива или удалить лишний, приходится сдвигать соседние элементы. Без сдвига нарушился бы порядок: либо появились бы пустые ячейки, либо нужные данные были бы потеряны.

Операции вставки и удаления встречаются в задачах редактирования списков: добавить запись в нужное место, убрать ненужную, поддерживать упорядоченность. Понимание того, как при этом смещаются элементы, помогает писать программы без ошибок и не терять данные.

Вставка элемента

Чтобы вставить значение на нужную позицию, сначала освобождают для него место. Для этого все элементы, начиная с конца массива и до места вставки, сдвигают на одну ячейку вправо. Двигаться нужно именно с конца: тогда каждый элемент аккуратно копируется в свободную соседнюю ячейку, ничего не затирая. После сдвига в освободившуюся ячейку записывают новое значение.

массив: 10 20 40 50
вставить 30 на 3-ю позицию
сдвигаем последние элементы вправо: 10 20 _ 40 50
записываем новое значение: 10 20 30 40 50

Удаление элемента

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

ДействиеНаправление сдвигаИзменение длины
Вставкавправо, с конца массиваувеличивается на 1
Удалениевлево, после удаляемогоуменьшается на 1
массив: 5 8 11 14
удалить 2-й элемент (8)
сдвигаем влево всё, что после него: 5 11 14 14
уменьшаем длину на 1: 5 11 14

После удаления в конце массива остаётся «лишняя» копия последнего элемента, но она больше не входит в учитываемую длину, поэтому на результат не влияет. Главное — не забыть уменьшить длину, иначе старое значение продолжит обрабатываться.

Чтобы выполнить сдвиг, используют цикл со счётчиком. При вставке счётчик идёт от последнего элемента к месту вставки и каждый элемент копирует на одну позицию правее. При удалении счётчик идёт от удаляемого элемента к концу и копирует каждый следующий элемент на одну позицию левее. Направление обхода в обоих случаях выбрано так, чтобы данные не затирались раньше, чем будут скопированы.

Стоит помнить, что у массива есть заранее отведённый размер. Вставка возможна, только если в массиве есть свободная ячейка в конце, иначе новому элементу некуда поместиться. Поэтому при работе с массивами отдельно хранят его фактическую длину — число занятых ячеек, которое и меняется при каждой вставке или удалении.

Частая ошибка: при вставке сдвигают элементы слева направо, начиная с места вставки. Тогда одно и то же значение копируется во все следующие ячейки и данные теряются. Сдвигать при вставке нужно строго с конца массива.

Кратко о главном

  • Вставка и удаление требуют сдвига соседних элементов массива.
  • При вставке сдвигают вправо, начиная с конца массива.
  • При удалении сдвигают влево всё, что стоит после удаляемого элемента.
  • Длина массива при этом меняется на единицу — её нужно обновлять.