Алгоритм - Удаление элемента из непрерывного списка (массива)

У нас есть два случая удаления:

Удалить в начале и середине:

В этом случае нам нужно искать позицию удаляемого элемента. Операция выполняется в два этапа:
  • Раздавить» Элемент имеет индекс 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++ |  Удаление значения из массива.