Список переменного размера
С помощью динамических массивов вы можете построить простой список переменного размера. Новый элемент в список добавляется следующим образом. Создайте новый массив, который на один элемент больше старого. Скопируйте элементы старого массива в новый и добавьте новый элемент. Затем освободите старый массив и установите указатель массива на новую страничку памяти.
Следующий фрагмент кода содержит операцию, которая добавляет элемент в динамический массив. Для удаления элемента можно написать аналогичный код, только массив необходимо сделать меньше.
Следующий фрагмент кода содержит операцию, которая добавляет элемент в динамический массив. Для удаления элемента можно написать аналогичный код, только массив необходимо сделать меньше.
var List : PIntArray; // Массив. Numltems : Integer; // Количество используемых элементов. procedure Addltem(new_item : Integer); var new_array : PIntArray; i : Integer; begin // Создание нового массива. GetMem(new_array,(Numltems+l)*SizeOf(Integer)); // Копирование элементов в новый массив. for i := 1 to Numltems do new_arrayA [ i] : = List*[i]; // Сохранение нового элемента. new_array [Numltems+l] := new_item; // Освобождение ранее выделенной памяти. if (NumItems>0) then FreeMem(List); // Установка указателя на новый массив. List := new_array; // Обновление размера. Numltems := Numltems+l; end;