Алгоритм - Удаление элемента из непрерывного списка (массива)
У нас есть два случая удаления:
Удалить в начале и середине:
В этом случае нам нужно искать позицию удаляемого элемента. Операция выполняется в два этапа:
- Раздавить» Элемент имеет индекс k, смещая все остальные, имеющие индекс superior.
- Уменьшите размер массива на 1.
Удалить в конце:
Это очень простой случай, просто уменьшите размер массива с помощью 1.
Алгоритм, объединяющий два случая:
Алгоритм удаления; Вар i,k : целое число; T[1..n]: целое число; Start для i от k до n-1 faire T[i] := T[i+1]; finfaire n := n-1; End |
Процедура:
Процедура delete(L:list,k:1..lmax) var i,n:1..lmax; Start n := L.длина; для i от k до n-1 faire L.T[i] := L.T[i+1]; finfaire L.длина:= n-1; Fin |
См. также:
Алгоритм | Вставка и удаление элемента в связанном списке.
Алгоритм | Смежные и связанные списки.
Алгоритм | Вставка элемента в непрерывный список(массив).
C/C++ | Удаление значения из массива.
C/C++ | Максимум массива и его позиция